吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 714|回复: 5
上一主题 下一主题
收起左侧

[调试逆向] ROP之ret2libc

[复制链接]
跳转到指定楼层
楼主
faqiadegege 发表于 2024-5-13 09:25 回帖奖励
Ret2Libc概述
程序动态加载libc库中功能函数,利用溢出漏洞,使用libc中比如system的地址覆盖返回地址,执行libc功能,控制执行流程,或者拿到shell等。

实例分析
静态分析,同样gets函数的溢出漏洞

确认文件属性




调试,确定溢出偏移






所以,溢出长度位108 + 4 = 112
确定‘/bin/sh’偏移




有关libc中system函数的偏移位置,需要参考PLT和GOT的关系GOT表是存储外部函数库的表PLT则是由代码片段组成的,每个代码片段都跳转到GOT表中的一个具体的函数调用二者的关系参考 https://saku376.github.io/2021/04/30/GOT%E8%A1%A8%E5%92%8CPLT%E8%A1%A8/

函数第一次调用过程


第一步由函数调用跳入到PLT表中,然后第二步PLT表跳到GOT表中,第三步由GOT表回跳到PLT表中,这时候进行压栈,把代表函数的ID压栈,第四步跳转到公共的PLT表项中,第五步进入到GOT表中,第六步 _dl_runtime_resolve对动态函数进行地址解析和重定位,第七部 把动态函数的真实地址写入到GOT表项中,第八步 执行函数并返回。 dynamic段:提供动态链接的信息,例如动态链接中各个表的位置link_map: 已加载库的链表,由动态库函数的地址构成的链表_dl_runtime_resolve: 在第一次运行时进行地址解析和重定位工作  之后的调用过程



所以,为了构造exp,找libc中的system时,找对应的符号在plt表中的地址即可
至此,构造exp


验证,获取shell




免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
willJ + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

推荐
sangaqiao 发表于 2024-5-13 16:27
感谢分享
推荐
dongmu666 发表于 2024-5-13 15:48
推荐
fish820 发表于 2024-5-13 11:08
推荐
nishuidechali 发表于 2024-5-18 03:10
感谢分享
5#
PJ997272250 发表于 2024-5-16 09:02

感谢大佬分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-24 02:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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