
下载文件后,首先检查保护:

随后将文件拖入ida,查看源码,在hello函数中,发现了如下代码

首先用安全的fgets输入了一个变量,接着用不安全的gets接收了一个变量,在此处可以确认是栈溢出,且溢出点就在此处。
开始寻找利用方式,s到ebp的距离是0x26,所以需要填充0x26的垃圾数据到ebp,接着再填充0x4的垃圾数据(覆盖ebp)。
发现了system函数
![]()
还缺一个"/bin/sh"字符串,找遍了代码,没有发现,但是由于此前可以有一个自己的输入,保存在name变量上,即可以自己手动输入"/bin/sh",自此,设计栈结构为:

本文介绍了CTF挑战攻防世界中的pwn-cgpwn2问题,通过ida分析源码,揭示了一个栈溢出漏洞。利用fgets和gets函数的组合,找到了溢出点,并设计了栈结构来覆盖ebp,进一步通过system函数执行/bin/sh,实现漏洞利用。攻击过程包括填充特定长度的数据和手动构造输入来触发系统命令执行。
最低0.47元/天 解锁文章
342

被折叠的 条评论
为什么被折叠?



