准备

1、32位虚拟机
2、安装gdb

通关操作

通关操作
首先,将bomb反汇编。
命令如下:

objdump -d bomb > 1.txt

找到phase_1函数:
phase_1

可以看到,调用了strings_not_equal函数,找到strings_not_equal函数:
strings_not_equal
第10和13行调用了string_length函数,推测前面几行的寄存器内存放有目标字符串的地址。所以,我们可以在调用string_length函数处设置断点,然后查看前面几个字符串存放地址的内容。
设置断点
我输入的字符串是test bomb,用disas命令反汇编。
反汇编查看
i r 命令查看寄存器内容,推测ebx内是一个字符串地址。查看一下。
找到我输入的字符串
test bomb是我先前输入的字符串,也可这么查看:
查看2
继续运行,查看寄存器内容:
查看r
推测edi或esi中有目标字符串:
找到目标字符串
或者这么做:

(gdb) x/s 0x403144
0x403144:       "Verbosity leads to unclear, inarticulate things."

现在找到了目标字符串,通关操作如下:
通关操作
当然,也可以用其他方法,一般找到的字符串有些特别,执行strings bomb 然后从一堆字符串里找也行。
strings bomb
可以看到,这一堆句子里Verbosity leads to unclear, inarticulate things. 有些特别,揣测其就是我要找的句子,事实证明就是它。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐