利用限制 存在格式化字符串漏洞 每个格式化字符串只能实现一次 需要等待int长度空格的输出时间 利用原理 *可以通过参数指定格式化字符串的宽度,比如: int width = 10; char ch = 'a'; printf("|%*c|", width, ch); // output:|
分析过程 观察栈结构 这题的关键(对我来说)就是利用栈上残留的数据。平时练的不多,没有这个习惯,导致泄露和格式化字符串利用都遇上了麻烦。 vuln函数里的栈结构如下: 00:0000│ rsp 0x7fffffffdfe0 ◂— 0x0 ... ↓ 2 skipped 03:0018│
安全策略 先用checksec检查安全策略 Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled 运行程序 大概运行一下程