
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。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月28日 18时56分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Manjaro 24.2 “Yonada” 发布:尖端功能与精美界面再度进化
2025-04-11
Manjaro Linux 推出新不可变版本:扩展产品范围,开放社区反馈和测试
2025-04-11
map 函数返回的列表在使用一次后消失
2025-04-11
Map 遍历取值及jstl的取值
2025-04-11
Mapbox GL示例教程【目录】-- 已有80篇
2025-04-11
Mapbox TOKML:将GeoJSON转换为KML的开源工具
2025-04-11
mapping文件目录生成修改
2025-04-11
MapReduce实现二度好友关系
2025-04-11
MapReduce的模式、算法和用例
2025-04-11
MapReduce的编程思想(1)
2025-04-12
MapReduce程序依赖的jar包
2025-04-12
MapReduce:大数据处理的范式
2025-04-12
MapStruct 对象间属性复制
2025-04-12
MapStruct 映射过程中忽略某个字段
2025-04-12
MapStruct 超神进阶用法,让你的代码效率提升十倍!
2025-04-12
Map中key和value值是否可以为null或空字符串?
2025-04-12
map和bean的相互转换
2025-04-12