0x00 前言
一道32位rop题,里面有个off-by-one的细节,这次没有注意,下次一定好好看
0x01 漏洞分析
power_up
1 | int __cdecl power_up(char *dest) |
漏洞的关键在于strncat(dest, &s, 48 - *((_DWORD *)dest + 12));,这个函数会在拼接后在结尾再加一个\x00,所以就会把dest+12中的内容覆盖成0,因此下一次调用power_up仍然能够拼接,所以造成了栈溢出.
0x02 exp
1 | from pwn import * |