Lctf-2016-pwn100 题解
发布日期:2021-05-15 04:19:04 浏览次数:23 分类:精选文章

本文共 604 字,大约阅读时间需要 2 分钟。

栈溢出与ROP漏洞利用

1. 栈溢出分析

样本程序运行时,输入超过200个字符后会回显“bye~”,并报错。这表明程序在读取输入时遇到了栈溢出问题。通过分析发现,程序将输入的200个字符写入到栈中的一个局部变量v1中。由于v1所在的栈空间只有0x40字节,读取200个字符导致栈溢出。

2. 静态分析与程序逻辑

通过IDA工具分析发现,程序的主逻辑集中在sub_40063D函数中。该函数通过循环读取输入并将字符写入栈中,导致栈溢出。由于没有栈保护,直接可以利用此漏洞。

3. 利用栈溢出进行ROP

由于NX保护启用,无法直接执行shellcode。因此,采用ROP技术泄露libc中的函数地址。通过构造特定payload,程序会输出pop_rdi和puts的地址,进而找到system函数地址。

4. 泄露libc函数地址

构造一个循环的payload,覆盖栈空间后,附加pop_rdi指令和目标地址,发送后程序输出相关地址。提取这些地址后,进一步找到system函数地址。

5. 控制程序执行流程

通过覆盖标准输入函数的地址,控制程序执行system("/bin/sh\x00"),获得交互式shell。构造复杂payload后,发送并处理输出,确保漏洞利用成功。

6. 脚本实现与测试

编写脚本构造和发送payload,接收并处理程序输出。确保脚本在不同环境下正确工作,能够稳定获得交互式 shell。

上一篇:ciscn_2019_n_3 题解
下一篇:攻防世界pwn题 -- secret file 题解

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月28日 18时56分32秒