吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 682|回复: 0
上一主题 下一主题
收起左侧

[漏洞分析] ropemporium ROP -- write432

[复制链接]
跳转到指定楼层
楼主
faqiadegege 发表于 2025-5-23 11:33 回帖奖励
使用IDA反编译文件,获取代码逻辑 main函数中调用了pwnme函数,改函数来自压缩包中包含的库文件libwrite432.so
在libwrite432.so中,pwnme函数伪代码如下,存在溢出问题
除此之外,该文件中同其他Emporium用例一样,包含usefulFunction函数,伪代码如下,其中调用了函数print_file,该函数使用堆栈传递一个字符串参数


在libwrite432.so中print_file函数伪代码如下


该用例的最终目标是,利用已有的函数,通过溢出rop调用print_file,最终读取目录下的flag.txt文件内容 思路:1、通过pwnme中溢出跳转执行print_file函数2、pirnt_file的参数指向flag.txt的地址3、在.data段中写输入flag.txt这个字符串4、构造堆栈向.data中写数据flag.txt难点在于最后第四点,这里溢出后,只能使用栈,那就只能使用栈将数据写到.data中去 而在栈中一次只能写入4个字节例如,pop eax; pop ebx  -> mov [eax], ebx这一次将写入四个字节,比如写入flag,同样的再来一次再写入.txt即,在程序中尝试寻找pop, pop, ret和mov, ret在程序中找到如下汇编代码



首先确认溢出长度使用gdb调试程序




如上面三部分图片所示,通过使用100字节的字符串作为输入进行验证,确定溢出长度为44字节查看.data段



构造利用链1、 构造基本溢出调用print_file



2、 构造写flag.txt到.data段并链结整个利用链即,第一步的flag.txt_address,构造这个地址中存储数据flag.txt根据前面的分析和ROP gadget寻找到的数据,得到如下栈结构



利用脚本


bingo



同样的,可以写/bin/sh到.data段,调用system,是一样的原理

image.png (103.73 KB, 下载次数: 0)

image.png

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
杨辣子 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
WangWhereGo + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-6-19 01:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表