吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2176|回复: 4
收起左侧

[调试逆向] ROP之ret2syscall

[复制链接]
faqiadegege 发表于 2024-5-10 10:24
ret2syscall概述ret2syscall,即利用溢出漏洞,控制流程,执行系统调用,获取shell系统调用:用户空间中的程序与操作系统内核进行交互的一种方式。当用户空间中的程序需要执行一些内核权限下的操作时(例如访问硬件、创建新进程、分配内存等),它会通过系统调用来请求操作系统内核完成这些操作系统调用是用户空间程序与内核空间进行交互的接口,通过系统调用,用户空间的程序可以请求内核执行一些特权操作系统调用提供了稳定的接口,使得用户空间的程序能够独立于内核的具体实现来编写和运行系统调用机制确保了用户空间的程序不能直接访问内核的数据结构或执行内核代码,从而提高了系统的安全性为了执行系统调用,应用程序必须切换到内核模式。这通常是通过触发一个软件中断来实现的,该中断将控制权传递给内核。在x86架构中,这通常是通过执行int 0x80指令来完成的(但在现代Linux系统上,这已被其他机制所取代,如syscall指令或sysenter/sysexit指令)内核根据系统调用号查找并执行相应的系统调用处理函数。这个处理函数会执行请求的操作,并使用应用程序提供的参数系统调用处理函数完成后,内核会将结果存储在预先约定的位置(如用户空间的某个内存地址),并恢复之前保存的用户上下文。然后,控制权被交还给用户空间的应用程序 样本
ret2syscall.zip (307.59 KB, 下载次数: 4)

静态分析
image.png

调试,确认溢出位置
image.png

image.png

image.png

image.png

即溢出长度为: 108+4 = 112
调用系统调用获得shell,可使用系统调用execve(“/bin/sh”, NULL, NULL)根据x86的系统调用原理如下eax  -系统调用号(在Linux中,系统调用号用于标识要执行的系统调用)ebx  -参数1ecx  -参数2edx  -参数3esi   -参数4edi   -参数5……触发 int 80 中断 确认文件中的汇编位置分别找到 “/bin/sh”, int 80, eax, ebx, ecx, edx 在文件中的偏移
image.png

即:eaxoff -> 0x080bb196
image.png

即 ebx_ecx_edx_off -> 0x0806eb90
image.png

即 sh_off -> 0x080be408
image.png

即 int80_off -> 0x08049421根据pop指令和ret指令原理,结合上面的各个寄存器使用地址使用pwn flat 构造栈结构
image.png

对应可以构造exploit为:
image.png

启动验证
image.png

成功获取shell

免费评分

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

查看全部评分

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

HANWANG 发表于 2024-5-10 12:43
感谢分享
starryskyhello 发表于 2024-5-11 06:40
n1kOvO 发表于 2024-5-10 16:23
twx233 发表于 2024-5-10 11:46
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-15 12:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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