0x01 分析

0x02 运行

程序读入一个长度,然后按照长度读入后面输入的data并回显。
0x03 IDA

数据长度被限制为32,无法溢出,接着查看get_n函数。

接受a2个长度的字符串并放到vuln函数的缓冲区内部,但是a2传入的值类型是unsigned int,而前面判断长度的类型是int,可以规避长度限制。
0x04 思路
输入负数长度,绕过长度检查,执行rop。
0x05 exp
from pwn import *
from LibcSearcher import *
context.log_level = 'debug'
p = process('./pwn2_sctf