攻防世界 welpwn

本文详细介绍了攻防世界welpwn题目的解题过程,通过IDA分析,发现存在栈溢出,但无直接利用的system或/bin/sh字符串。通过两次溢出,第一次利用POP指令清除栈上内容,改变执行流程,获取write地址,然后利用ROPSearcher找到libc中的system和/bin/sh。最终构造两次不同的payload实现目标。
摘要由CSDN通过智能技术生成

1.题目

2.IDA分析

3.流程分析

流程很简单,输入buf,这里不存在溢出,然后进入echo方法,将buf复制到s2,当遇到\x00就结束。这个条件会导致p64(addr)后面的内容被截断(地址经p64包装后肯定会出现\0x00)。栈结构如下:

 

 也就是说,s2只能复制buf前面32个单元的内容。为了使32位后面的内容得以执行,我们需要在ret位置跳去执行四个pop指令,去掉buf前32位内容(也就是复制到s2里面的这些内容),这样就能连贯执行32位之后的内容了。

所以,目前payload = ‘A’ * 24 + p64(addr_pop4) 

观察ida的function区没有发现sy

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值