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字符串的位置,具体操作
额.........脚本也不太行
格式化字符串漏洞利用实战
1766

被折叠的 条评论
为什么被折叠?



