下载附件,一个无后缀文件,推测一般是linux可执行文件,在kali尝试运行,发现运行逻辑为输入昵称回显昵称
启动场景,给了一个nc连接,连接发现运行逻辑与附件相同
把程序放进IDA分析,发现主要运行逻辑在say_my_name函数,注意到该函数用了gets函数,同时注意到程序有方法名为open_shell
考虑构造缓冲区溢出访问open_shell函数,注意到以下片段
s= byte ptr -1Ch
lea eax, [ebp+s]
push eax ; s
call _gets
leave
retn
不难发现只需要在28个字节后填写open_shell函数的入口0x080491B6即可
再次分析发现open_shell函数需要传入一个参数并校验其是否为0x539,根据函数传参的内部原理,接下来是返回的地址,再接下来是传入函数的参数,不难想到再填充一个0x539
接下来在通常放有flag的目录找到flag即可,这里直接是同一目录