Perface

这是个一眼就看出来的洞。

  1. scanf读入超长字符串,直接就有栈溢出,而且没有开canary保护
  2. mmap加载提供的libc到0x5555E000,可以执行
  3. 检测输入的字符串中各个字符是否在[0x20, 0x7f]范围内

Thinking

当时有几种思路

  1. 在main函数里找rop,不过这个直接pass,因为输入的字符有限制,而main里的对应地址都是0x80开头,首先就不行
  2. 通过mmap申请R/W/X的空间,可是地址和函数的限制。pass
  3. 在0x555E000中招符合的地址,写了脚本之后筛选合适的rop后,拼凑出来了system的地址,但是对于ebx等寄存器并没有拼凑出来。。sigh

Summary

总的来说还是拼凑rop,和我当时思路一样orz,,然而需要一些好的工具来过滤和构造orz。

results matching ""

    No results matching ""