攻防世界-PWN进阶区-welpwn(RCTF-2015)

该博客详细分析了RCTF-2015比赛中welpwn挑战的解决过程,讨论了栈溢出的情况,由于存在NX保护,作者转向使用ROP技术。通过分析echo函数中的缓冲区溢出,并找到特殊的gadget,构造了两个阶段的ROP链来实现攻击,最终成功获取shell。
摘要由CSDN通过智能技术生成

题目分析

首先看一下开了哪些保护
在这里插入图片描述
因为开了NX,所以考虑使用ROP或者return-into-libc
用IDApro分析一下源代码
在这里插入图片描述
可以看出main函数中不存在注入点,我们看一下echo函数
在这里插入图片描述
在eho函数中,缓冲区至分配了0x10大小,但是传入的buf有0x400字节,因此可以看出存在溢出
不过拷贝遇到\x00就停止了,这个时候我们只能注入一个返回地址。
但是在ROPgadget里面能找到一个特殊的gadget,它就是破题的关键
在这里插入图片描述
我们先分析一下拷贝前的栈结构,(每格大小为8byte)
在这里插入图片描述
我们构造payload为’a’*0x18 + pop_4 + ROPchain,拷贝结束时栈的结构如下图所示
在这里插入图片描述
当4个pop完成时,栈结构如下
在这里插入图片描述
此时rsp指向ROPchain的开头,我们构造的rop链就能够执行了
第一次溢出的ROPchain如下:

pop rdi
read_got
puts_plt
main_addr

返回之后,第二次构造的ROPchain如下

pop rdi
/bin/sh addr
system

Exp

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值