文章目录
ret2syscall
ret2syscall: 控制程序执行系统调用,获取 shell
1.原理
系统调用参考博客:https://blog.youkuaiyun.com/qq_33948522/article/details/93880812
2.构造过程
使用ida分析程序,发现存在gets()函数,可以用来进行栈溢出:

使用shift+F12查看字符串,发现存在"/bin/sh"字符串,位于0x080BE408处:

基于rop链构造思路,需要参数由eax,ebx,ecx,edx提供
需要寻找以下语句:
pop eax# 系统调用号载入, execve为0xb
pop ebx# 第一个参数, /bin/sh的string
pop ecx# 第二个参数,0
pop edx# 第三个参数,0
int 0x80
首先寻找eax, ret语句,发现:0x080bb196处的语句可以
然后寻找其他包含ebx, ecx, edx的语句:
发现0x0806eb90处同时包含需要的ebx, ecx, edx的语句:
寻找int 80h,发现0x08049421处有该语句: