准备
1、32位虚拟机
2、安装gdb
通关操作
首先,将bomb反汇编。
命令如下:
objdump -d bomb > 1.txt
找到phase_1函数:
可以看到,调用了strings_not_equal函数,找到strings_not_equal函数:
第10和13行调用了string_length函数,推测前面几行的寄存器内存放有目标字符串的地址。所以,我们可以在调用string_length函数处设置断点,然后查看前面几个字符串存放地址的内容。
我输入的字符串是test bomb,用disas命令反汇编。
用i r
命令查看寄存器内容,推测ebx内是一个字符串地址。查看一下。
test bomb是我先前输入的字符串,也可这么查看:
继续运行,查看寄存器内容:
推测edi或esi中有目标字符串:
或者这么做:
(gdb) x/s 0x403144
0x403144: "Verbosity leads to unclear, inarticulate things."
现在找到了目标字符串,通关操作如下:
当然,也可以用其他方法,一般找到的字符串有些特别,执行strings bomb
然后从一堆字符串里找也行。
可以看到,这一堆句子里Verbosity leads to unclear, inarticulate things.
有些特别,揣测其就是我要找的句子,事实证明就是它。