1.checksec+运行
64位,NX/Canary保护
shift+f12
竟然有flag,不过肯定不是,说明远程flag就在flag_addr=0x601080
2.64位IDA
1.main
printf,而且程序开了canary保护,可以想到借助格式化字符串漏洞绕过canary
将flag写在了栈上那个位置,可以利用格式化字符串打印栈上内容,泄露出flag
read(0, src, 0x80uLL);
strcpy(usr, src); 会在字符串末尾加’\x00’
跟进usr
0x601160-0x6010E0=0x80 dec=128填充
可以用'\x00'来覆盖0x601160的低位-----0x601100,就可利用格式化字符串
确定偏移offset
offset=0x28
然后不太会确定flag字符串的位置,具体操作
额.........脚本也不太行