使用file查看文件是多少位
可以看出是Linux系统下的64位ELF文件
用checksec检查文件保护
有金丝雀(canary)还有堆的保护
运行程序
当输入数据过长时,显示程序段错误,直接崩溃了,说明是可能存在栈溢出的,但是存在canary保护,可能不是直接溢出 canary保护
IDA中汇编出伪C代码
输入v5如果是1926直接退出,如果不是再用gets输入v4(gets必是漏洞,输入时对长度没有限制,可以无限填充数据),如果v5又等于1926才输出flag
查看栈里数据的地址
因为v4是gets输入,所以可以一直填充,数据填充覆盖v5时将数据改为1926
写exp
显示没有那个文件或目录其实就是打通
将content改为0打远程
总结
这道题虽然有canary保护,但并没有开启,可以直接通过gets不断填充数据覆盖变量得到flag