攻防世界-Mary_Morton 2
这道题是一道格式化字符串泄露canary绕过的题目
检查,64位,保护开了金丝雀和nx。。。

main函数

函数9da相当于一个菜单,v3就是你的选择,8eb有格式化字符串漏洞且栈溢出,960可以栈溢出,8da是后门函数
先输入2再输入3即可全部利用漏洞
我的思路是先用格式化字符串泄露canary,然后用960栈溢出到后门

这里偷一张师傅的图片。。
1.泄露canary

偏移为6
buf和v2本来的差距就有0x90-8h=0x88 0x88/0x8=0x11(十进制17)。
所以,总共需要往后找6+17=23个地址上即存canary的值。这里小小解释一下,因为canary放在了栈中,最开始时我们读入数据s,之后的printf同样含有原始的数据。
2.栈溢出
填入垃圾数据的同时要记得填入canary。
payload2=b'a'0x88+p64(canary)+b'a'8+p64(sys_addr)
结果


浙公网安备 33010602011771号