吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

[调试逆向] ropemporium ROP -- write4

[复制链接]
跳转到指定楼层
楼主
faqiadegege 发表于 2025-5-23 17:04 回帖奖励
使用pattern_create和pattern_offset确定溢出长度
生成100个随即负载


输入负载,触发溢出段错误,这里rip指向了一个地址,无法通过这里直接使用pattern_offset确定溢出长度

使用info命令查看栈帧状态,可见rip指向的地址中存放的是负载的字符串,使用pattern_offset得到溢出长度为40

同x86的逻辑是相同的,寻找gadget,pop xxx, pop xxx ret 和 mov [xxx], xxx ret如下,可见r14, r15这一对的使用符合要求


查看.data段,这里可以判断.bss段也是可以使用的


获取print_file地址

对于x64程序,函数的传参是使用寄存器,前 6 个参数 使用寄存器传递(RDI, RSI, RDX, RCX, R8, R9),这里print_file一个参数,使用rdi即可,而在上面的gadget中是为了将字符串写到某一地址,这时候,需要一个gadget将字符串地址(该地址)传递给rdi即可


这里要注意的是,x64写数据一次可写入8字节综上有如下payload构造逻辑



构造flag.txt数据存储后payload结构


利用脚本




根据前面的查验知道。bss段同data拥有相同的权限,且该段长度为8字节,所有,同样使用bss段作为字符串的写入地址,也可完成利用





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

image.png

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

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

本版积分规则

返回列表

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

GMT+8, 2025-6-19 00:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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