2024i春秋第四届长城杯网络安全大赛暨京津冀网络安全技能竞赛初赛wp-flowershop+easyre

flowershop

在这里插入图片描述

如图所示,v8是钱的数量,strncpy从src复制三个字符给dest的数组里,最后一个元素是0,相当于字符串截断,strcmp是比较c和dest中的内容,如果相等就不会exit(0);双击c进去看,c是字符串“pwn”,所以我们在read溢出的时候,把src覆盖成”pwn/x00”就可以绕过检测,后面的v8就可以随便覆盖八字节,充值任意的钱数。

接下里我们再进行购物,可见shop传入的v5有三个元素,我们再进shop函数看看:
通过分析就可以看到,这三个元素对应了每个商品购买的数量,每次买一个商品,对应的元素就会加1,每件商品最多买8个

此时末位有个read,很可能就是我们要溢出的漏洞,但是参数v4可控未知,所以往前可看check函数做了什么,显然通过分析这就是满足买了两件a商品和1件b商品的时候就可以给a2指针赋值为70,指向的就是v4,这样shop函数的buf只有10字节,但是read可以输入70字节,就达到了溢出攻击条件

在这里插入图片描述

所以最后我们通过购买c商品,达到给magic赋值”/bin/sh”的目的,所有条件已达成,

在这里插入图片描述

值得注意的是最后赋值钱的时候八字节的最高位不能是1,因为这是符号位,如果是1就是负数了,最后read也不一定要追加到70个字节,能溢出执行system即可了。

from pwn import *
#p=remote("8.147.134.241",24158)
p=process("./pwn")
system=0x400D7A
magic=0x601840
pop_rdi=0x400f13
ret=0x4006f6
payload=b'a'*52+b'pwn\x00'+b'\xff\xff\xff\x7f\xff'
p.send(payload)
p.recvuntil("你的选项:"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是乙太呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值