ret2text
进程存在危险函数如system(“/bin”)或execv(“/bin/sh”,0,0)的片段,可以直接劫持返回地址到目标函数地址上,从而获取shell。
1.检查保护机制
首先调用checksec,检查保护机制:
发现pie没有开启
2.ida分析程序
使用ida打开程序ret2text,静态分析:
发现main函数中存在函数:vulnerable(),里面有危险函数gets(),可以用来进行栈溢出
发现存在函数get_shell()
因此可以栈溢出覆盖return使其跳到 system("/bin/sh")位置
使用ida获取system("/bin/sh")地址为:0x08048522
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NW64A61O-1631941229258)(C:\Users\Chance\AppData\Roaming\Typora\typora-user-images\image-20210705162106600.png)]
3.exp编写
因此,可以得到编写exp的逻辑:
使用gdb调试,寻找buf的地址:
不断步过,然后在vulnerable()函数内步入,当在gets()函数处,输入8个’A’,观察栈的状态:
则buf的偏移为: