CS:APP Attack_lab
实验描述
本次实验利用程序需要外部输入的特点,输入机器码对程序返回值覆盖,以达到攻击的目的,即在getbuf函数需要的输入中做手脚,以致不能正常返回,执行攻击代码。
第一阶段
第一阶段中栈随机化未开机,可以得知内存位置的确切地址,且栈中机器码可执行。
那么我们将需要执行的操作码和地址输入机器码即可。
本次实验利用程序需要外部输入的特点,输入机器码对程序返回值覆盖,以达到攻击的目的,即在getbuf函数需要的输入中做手脚,以致不能正常返回,执行攻击代码。
第一阶段中栈随机化未开机,可以得知内存位置的确切地址,且栈中机器码可执行。
那么我们将需要执行的操作码和地址输入机器码即可。
使用tar -vxf
将炸弹压缩包解压,cd进入,可以从bomb.c中看出实验的用意以及程序的大致
逻辑,bomb为可执行程序,使用gdb调试该程序.
1 | (gdb) b read_line |
给read_line函数打上断点,以便每次输入运行一关.给explode_bomb打上断点,以便在炸弹爆炸
前可以处理.
获得phase_1汇编代码
1 | (gdb) disas phase_1 |
可见,此题是将我们输入的字符串与地址0x4024a0处字符串比较,不等则爆炸.查看该字符串.
1 | (gdb) x/s 0x4024a0 |
那么答案是We have to stand with our North Korean allies.
1 |
|
0X1234AB78
利用按位运算$x \& 1 = x , b | 0 = b$。
Update your browser to view this website correctly.&npsb;Update my browser now