lab2

目录

1. phase_1

  • 思路
   0x08048ae0 <+0>:		push   %ebp
   0x08048ae1 <+1>:		mov    %esp,%ebp
   0x08048ae3 <+3>:		sub    $0x18,%esp
   0x08048ae6 <+6>:		movl   $0x804a1f0,0x4(%esp)
   0x08048aee <+14>:	mov    0x8(%ebp),%eax
   0x08048af1 <+17>:	mov    %eax,(%esp)
   0x08048af4 <+20>:	call   0x8049002 <strings_not_equal>
   0x08048af9 <+25>:	test   %eax,%eax
   0x08048afb <+27>:	je     0x8048b02 <phase_1+34>
   0x08048afd <+29>:	call   0x8049225 <explode_bomb>
   0x08048b02 <+34>:	leave  
   0x08048b03 <+35>:	ret    

根据call 指令处string_not_equal 可知只有输入的字符串相同才可以拆掉炸弹,由<+6> 处的存放在data 段之中利用x/s 0x804a1f0 指令读取答案内容之后运行bomb 进行拆解密码为

There are rumors on the internets.

  • 完成截图

image-20210519111217989

2. phase_2

  • 思路
   0x08048b04 <+0>:		push   %ebp
   0x08048b05 <+1>:		mov    %esp,%ebp
   0x08048b07 <+3>:		push   %esi
   0x08048b08 <+4>:		push   %ebx
   0x08048b09 <+5>:		sub    $0x30,%esp
   0x08048b0c <+8>:		lea    -0x20(%ebp),%eax
   0x08048b0f <+11>:	mov    %eax,0x4(%esp)
   0x08048b13 <+15>:	mov    0x8(%ebp),%eax
   0x08048b16 <+18>:	mov    %eax,(%esp)
   0x08048b19 <+21>:	call   0x8049267 <read_six_numbers>
   0x08048b1e <+26>:	cmpl   $0x1,-0x20(%ebp)
   0x08048b22 <+30>:	je     0x8048b42 <phase_2+62>
   0x08048b24 <+32>:	call   0x8049225 <explode_bomb>
   0x08048b29 <+37>:	jmp    0x8048b42 <phase_2+62>
   0x08048b2b <+39>:	mov    -0x4(%ebx),%eax
   0x08048b2e <+42>:	add    %eax,%eax
   0x08048b30 <+44>:	cmp    %eax,(%ebx)
   0x08048b32 <+46>:	je     0x8048b39 <phase_2+53>
   0x08048b34 <+48>:	call   0x8049225 <explode_bomb>
   0x08048b39 <+53>:	add    $0x4,%ebx
   0x08048b3c <+56>:	cmp    %esi,%ebx
   0x08048b3e <+58>:	jne    0x8048b2b <phase_2+39>
   0x08048b40 <+60>:	jmp    0x8048b4a <phase_2+70>
   0x08048b42 <+62>:	lea    -0x1c(%ebp),%ebx
   0x08048b45 <+65>:	lea    -0x8(%ebp),%esi
   0x08048b48 <+68>:	jmp    0x8048b2b <phase_2+39>
   0x08048b4a <+70>:	add    $0x30,%esp
   0x08048b4d <+73>:	pop    %ebx
   0x08048b4e <+74>:	pop    %esi
   0x08048b4f <+75>:	pop    %ebp
   0x08048b50 <+76>:	ret    

首先我们看到<read_six_numbers>得知此炸弹是六个数字

第一步:

   0x08048b1e <+26>:	cmpl   $0x1,-0x20(%ebp)
   0x08048b22 <+30>:	je     0x8048b42 <phase_2+62>
   0x08048b24 <+32>:	call   0x8049225 <explode_bomb>

比较相同的话跳转,不同的话炸弹爆炸,可知第一个数字为1

第二步:

   0x08048b2b <+39>:	mov    -0x4(%ebx),%eax
   0x08048b2e <+42>:	add    %eax,%eax
   0x08048b30 <+44>:	cmp    %eax,(%ebx)
   0x08048b32 <+46>:	je     0x8048b39 <phase_2+53>
   0x08048b34 <+48>:	call   0x8049225 <explode_bomb>

这里去取出ebp-4 的值相加,也就是自己的两倍所以第二个数字为2

此时后面已经没有调用炸弹爆炸的函数了,所以猜测在此处存在循环每个都是前面数字的两倍

之后根据

   0x08048b39 <+53>:	add    $0x4,%ebx
   0x08048b3c <+56>:	cmp    %esi,%ebx
   0x08048b3e <+58>:	jne    0x8048b2b <phase_2+39>

ebx+4 的值和esi 进行比较不相等跳转到

   0x08048b2b <+39>:	mov    -0x4(%ebx),%eax

而这句之前恰巧是乘2 前一个比较的语句,由此可见这是一个循环所以最后的密码为

1 2 4 8 16 32

  • 完成截图

image-20210519111050193

3. phase_3

  • 思路
   0x08048b51 <+0>:		push   %ebp
   0x08048b52 <+1>:		mov    %esp,%ebp
   0x08048b54 <+3>:		sub    $0x38,%esp
   0x08048b57 <+6>:		lea    -0x10(%ebp),%eax
   0x08048b5a <+9>:		mov    %eax,0x10(%esp)
   0x08048b5e <+13>:	lea    -0x11(%ebp),%eax
   0x08048b61 <+16>:	mov    %eax,0xc(%esp)
   0x08048b65 <+20>:	lea    -0xc(%ebp),%eax
   0x08048b68 <+23>:	mov    %eax,0x8(%esp)
   0x08048b6c <+27>:	movl   $0x804a23a,0x4(%esp)
   0x08048b74 <+35>:	mov    0x8(%ebp),%eax
   0x08048b77 <+38>:	mov    %eax,(%esp)
   0x08048b7a <+41>:	call   0x80487d0 <__isoc99_sscanf@plt>
   0x08048b7f <+46>:	cmp    $0x2,%eax
   0x08048b82 <+49>:	jg     0x8048b89 <phase_3+56>
   0x08048b84 <+51>:	call   0x8049225 <explode_bomb>
   0x08048b89 <+56>:	cmpl   $0x7,-0xc(%ebp)
   0x08048b8d <+60>:	ja     0x8048c82 <phase_3+305>
   0x08048b93 <+66>:	mov    -0xc(%ebp),%eax
   0x08048b96 <+69>:	jmp    *0x804a24c(,%eax,4)
   0x08048b9d <+76>:	mov    $0x79,%eax
   0x08048ba2 <+81>:	cmpl   $0x344,-0x10(%ebp)
   0x08048ba9 <+88>:	je     0x8048c8c <phase_3+315>
   0x08048baf <+94>:	call   0x8049225 <explode_bomb>
   0x08048bb4 <+99>:	mov    $0x79,%eax
   0x08048bb9 <+104>:	jmp    0x8048c8c <phase_3+315>
   0x08048bbe <+109>:	mov    $0x68,%eax
   0x08048bc3 <+114>:	cmpl   $0x14a,-0x10(%ebp)
   0x08048bca <+121>:	je     0x8048c8c <phase_3+315>
   0x08048bd0 <+127>:	call   0x8049225 <explode_bomb>
   0x08048bd5 <+132>:	mov    $0x68,%eax
   0x08048bda <+137>:	jmp    0x8048c8c <phase_3+315>
   0x08048bdf <+142>:	mov    $0x66,%eax
   0x08048be4 <+147>:	cmpl   $0xf5,-0x10(%ebp)
   0x08048beb <+154>:	je     0x8048c8c <phase_3+315>
   0x08048bf1 <+160>:	call   0x8049225 <explode_bomb>
   0x08048bf6 <+165>:	mov    $0x66,%eax
   0x08048bfb <+170>:	jmp    0x8048c8c <phase_3+315>
   0x08048c00 <+175>:	mov    $0x6a,%eax
   0x08048c05 <+180>:	cmpl   $0x12c,-0x10(%ebp)
   0x08048c0c <+187>:	je     0x8048c8c <phase_3+315>
   0x08048c0e <+189>:	call   0x8049225 <explode_bomb>
   0x08048c13 <+194>:	mov    $0x6a,%eax
   0x08048c18 <+199>:	jmp    0x8048c8c <phase_3+315>
   0x08048c1a <+201>:	mov    $0x69,%eax
   0x08048c1f <+206>:	cmpl   $0x1e3,-0x10(%ebp)
   0x08048c26 <+213>:	je     0x8048c8c <phase_3+315>
   0x08048c28 <+215>:	call   0x8049225 <explode_bomb>
   0x08048c2d <+220>:	mov    $0x69,%eax
   0x08048c32 <+225>:	jmp    0x8048c8c <phase_3+315>
   0x08048c34 <+227>:	mov    $0x63,%eax
   0x08048c39 <+232>:	cmpl   $0x24a,-0x10(%ebp)
   0x08048c40 <+239>:	je     0x8048c8c <phase_3+315>
   0x08048c42 <+241>:	call   0x8049225 <explode_bomb>
   0x08048c47 <+246>:	mov    $0x63,%eax
   0x08048c4c <+251>:	jmp    0x8048c8c <phase_3+315>
   0x08048c4e <+253>:	mov    $0x6f,%eax
   0x08048c53 <+258>:	cmpl   $0x31e,-0x10(%ebp)
   0x08048c5a <+265>:	je     0x8048c8c <phase_3+315>
   0x08048c5c <+267>:	call   0x8049225 <explode_bomb>
   0x08048c61 <+272>:	mov    $0x6f,%eax
   0x08048c66 <+277>:	jmp    0x8048c8c <phase_3+315>
   0x08048c68 <+279>:	mov    $0x73,%eax
   0x08048c6d <+284>:	cmpl   $0x267,-0x10(%ebp)
   0x08048c74 <+291>:	je     0x8048c8c <phase_3+315>
   0x08048c76 <+293>:	call   0x8049225 <explode_bomb>
   0x08048c7b <+298>:	mov    $0x73,%eax
   0x08048c80 <+303>:	jmp    0x8048c8c <phase_3+315>
   0x08048c82 <+305>:	call   0x8049225 <explode_bomb>
   0x08048c87 <+310>:	mov    $0x61,%eax
   0x08048c8c <+315>:	cmp    -0x11(%ebp),%al
   0x08048c8f <+318>:	je     0x8048c96 <phase_3+325>
   0x08048c91 <+320>:	call   0x8049225 <explode_bomb>
   0x08048c96 <+325>:	leave  
   0x08048c97 <+326>:	ret    

第一步我们注意到

   0x08048b7f <+46>:	cmp    $0x2,%eax
   0x08048b82 <+49>:	jg     0x8048b89 <phase_3+56>
   0x08048b84 <+51>:	call   0x8049225 <explode_bomb>

比较,成功的话跳转,不成功爆炸,利用x/s 0x804a23a读取到密码类型%d %c %d即两个整数和一个字符

第二步,在0x08048b89 设置断点运行,输入15 b 256 试运行,结果断在Breakpoint 1, 0x08048b89 in phase_3 () ,查看0x08048b89 比较的为ebp-0xc 的数值,利用x/x $ebp-0xc 查看参数的值为0x0f ,之后跳转到phase3+302 利用x/i 指令查看汇编为

 0x8048c82 <phase_3+305>:	call   0x8049225 <explode_bomb>

炸弹爆炸所以第一个数要小于7

第三步

再次调试输入0 b 256 仍然断在了一样的位置但是输入比7 小所以继续运行

   0x08048b93 <+66>:	mov    -0xc(%ebp),%eax   0x08048b96 <+69>:	jmp    *0x804a24c(,%eax,4)

此时eax0 ,利用x/10xg 0x804a42c 因为输入为0所以直接对应0x8048b9d

   0x08048b9d <+76>:	mov    $0x79,%eax

ebp-0x10 对应256 应该和0x344 相等即836

如果输入为1 则跳转到

   0x08048bbe <+109>:	mov    $0x68,%eax

即可推算出本题使用switch 语句

之后跳转到

   0x08048c8c <+315>:	cmp    -0x11(%ebp),%al

此处&al 的数值为0x79 所以对应输入为0 y 836

因此密码为0 y 836

  • 完成截图

image-20210519214218681

4. phase_4

  • 思路
   0x08048cfa <+0>:		push   %ebp   0x08048cfb <+1>:		mov    %esp,%ebp   0x08048cfd <+3>:		sub    $0x28,%esp   0x08048d00 <+6>:		lea    -0x10(%ebp),%eax   0x08048d03 <+9>:		mov    %eax,0xc(%esp)   0x08048d07 <+13>:	lea    -0xc(%ebp),%eax   0x08048d0a <+16>:	mov    %eax,0x8(%esp)   0x08048d0e <+20>:	movl   $0x804a44d,0x4(%esp)   0x08048d16 <+28>:	mov    0x8(%ebp),%eax   0x08048d19 <+31>:	mov    %eax,(%esp)   0x08048d1c <+34>:	call   0x80487d0 <__isoc99_sscanf@plt>   0x08048d21 <+39>:	cmp    $0x2,%eax   0x08048d24 <+42>:	jne    0x8048d2c <phase_4+50>   0x08048d26 <+44>:	cmpl   $0xe,-0xc(%ebp)//第一个数<=14   0x08048d2a <+48>:	jbe    0x8048d31 <phase_4+55>//小于或相等   0x08048d2c <+50>:	call   0x8049225 <explode_bomb>   0x08048d31 <+55>:	movl   $0xe,0x8(%esp)   0x08048d39 <+63>:	movl   $0x0,0x4(%esp)   0x08048d41 <+71>:	mov    -0xc(%ebp),%eax//断点2,x1   0x08048d44 <+74>:	mov    %eax,(%esp)//x1   0x08048d47 <+77>:	call   0x8048c98 <func4>   0x08048d4c <+82>:	cmp    $0x2,%eax//两个数   0x08048d4f <+85>:	jne    0x8048d57 <phase_4+93>   0x08048d51 <+87>:	cmpl   $0x2,-0x10(%ebp)//x2   0x08048d55 <+91>:	je     0x8048d5c <phase_4+98>//相等   0x08048d57 <+93>:	call   0x8049225 <explode_bomb>   0x08048d5c <+98>:	leave     0x08048d5d <+99>:	lea    0x0(%esi),%esi   0x08048d60 <+102>:	ret    

第一步我们观察到这条含有func4 函数的指令

由于不知道函数到底有多少行指令所以利用x/100i 0x8048c98 读取函数内部的指令,注意区分函数。同时函数里传入了两个参数

   0x8048c98 <func4>:		push   %ebp   0x8048c99 <func4+1>:		mov    %esp,%ebp   0x8048c9b <func4+3>:		push   %esi   0x8048c9c <func4+4>:		push   %ebx   0x8048c9d <func4+5>:		sub    $0x10,%esp   0x8048ca0 <func4+8>:		mov    0x8(%ebp),%edx   0x8048ca3 <func4+11>:	mov    0xc(%ebp),%eax   0x8048ca6 <func4+14>:	mov    0x10(%ebp),%ebx   0x8048ca9 <func4+17>:	mov    %ebx,%ecx   0x8048cab <func4+19>:	sub    %eax,%ecx   0x8048cad <func4+21>:	mov    %ecx,%esi   0x8048caf <func4+23>:	shr    $0x1f,%esi   0x8048cb2 <func4+26>:	add    %esi,%ecx   0x8048cb4 <func4+28>:	sar    %ecx   0x8048cb6 <func4+30>:	add    %eax,%ecx   0x8048cb8 <func4+32>:	cmp    %edx,%ecx   0x8048cba <func4+34>:	jle    0x8048cd3 <func4+59>   0x8048cbc <func4+36>:	sub    $0x1,%ecx   0x8048cbf <func4+39>:	mov    %ecx,0x8(%esp)   0x8048cc3 <func4+43>:	mov    %eax,0x4(%esp)   0x8048cc7 <func4+47>:	mov    %edx,(%esp)   0x8048cca <func4+50>:	call   0x8048c98 <func4>   0x8048ccf <func4+55>:	add    %eax,%eax   0x8048cd1 <func4+57>:	jmp    0x8048cf3 <func4+91>   0x8048cd3 <func4+59>:	mov    $0x0,%eax   0x8048cd8 <func4+64>:	cmp    %edx,%ecx   0x8048cda <func4+66>:	jge    0x8048cf3 <func4+91>   0x8048cdc <func4+68>:	mov    %ebx,0x8(%esp)   0x8048ce0 <func4+72>:	add    $0x1,%ecx   0x8048ce3 <func4+75>:	mov    %ecx,0x4(%esp)   0x8048ce7 <func4+79>:	mov    %edx,(%esp)   0x8048cea <func4+82>:	call   0x8048c98 <func4>   0x8048cef <func4+87>:	lea    0x1(%eax,%eax,1),%eax   0x8048cf3 <func4+91>:	add    $0x10,%esp   0x8048cf6 <func4+94>:	pop    %ebx   0x8048cf7 <func4+95>:	pop    %esi   0x8048cf8 <func4+96>:	pop    %ebp   0x8048cf9 <func4+97>:	ret    

第二步注意到

   0x08048d0e <+20>:	movl   $0x804a44d,0x4(%esp)

使用x/s 0x804a44d 得到0x804a44d: "%d %d"可知密码为两个整数

有下面几行可知,第一个参数小于等于14

   0x08048d26 <+44>:	cmpl   $0xe,-0xc(%ebp)//第一个数<=14   0x08048d2a <+48>:	jbe    0x8048d31 <phase_4+55>   0x08048d2c <+50>:	call   0x8049225 <explode_bomb>

继续由下面可知第二个参数等于2

   0x08048d51 <+87>:	cmpl   $0x2,-0x10(%ebp)   0x08048d55 <+91>:	je     0x8048d5c <phase_4+98>//相等

推导出递归函数之后得到密码5 2

  • 完成截图

image-20210527223728334

5. phase_5

  • 思路
   0x08048d61 <+0>:		push   %ebp   0x08048d62 <+1>:		mov    %esp,%ebp   0x08048d64 <+3>:		push   %ebx   0x08048d65 <+4>:		sub    $0x24,%esp   0x08048d68 <+7>:		mov    0x8(%ebp),%ebx   0x08048d6b <+10>:	mov    %ebx,(%esp)   0x08048d6e <+13>:	call   0x8048fe0 <string_length>   0x08048d73 <+18>:	cmp    $0x6,%eax   0x08048d76 <+21>:	je     0x8048dc2 <phase_5+97>   0x08048d78 <+23>:	call   0x8049225 <explode_bomb>   0x08048d7d <+28>:	lea    0x0(%esi),%esi   0x08048d80 <+31>:	jmp    0x8048dc2 <phase_5+97>   0x08048d82 <+33>:	movzbl (%ebx,%eax,1),%edx   0x08048d86 <+37>:	and    $0xf,%edx   0x08048d89 <+40>:	movzbl 0x804a26c(%edx),%edx   0x08048d90 <+47>:	mov    %dl,-0xf(%ebp,%eax,1)   0x08048d94 <+51>:	add    $0x1,%eax   0x08048d97 <+54>:	cmp    $0x6,%eax   0x08048d9a <+57>:	jne    0x8048d82 <phase_5+33>   0x08048d9c <+59>:	movb   $0x0,-0x9(%ebp)   0x08048da0 <+63>:	movl   $0x804a243,0x4(%esp)   0x08048da8 <+71>:	lea    -0xf(%ebp),%eax   0x08048dab <+74>:	mov    %eax,(%esp)   0x08048dae <+77>:	call   0x8049002 <strings_not_equal>   0x08048db3 <+82>:	test   %eax,%eax   0x08048db5 <+84>:	je     0x8048dc9 <phase_5+104>   0x08048db7 <+86>:	call   0x8049225 <explode_bomb>   0x08048dbc <+91>:	lea    0x0(%esi,%eiz,1),%esi   0x08048dc0 <+95>:	jmp    0x8048dc9 <phase_5+104>   0x08048dc2 <+97>:	mov    $0x0,%eax   0x08048dc7 <+102>:	jmp    0x8048d82 <phase_5+33>   0x08048dc9 <+104>:	add    $0x24,%esp   0x08048dcc <+107>:	pop    %ebx   0x08048dcd <+108>:	pop    %ebp   0x08048dce <+109>:	ret    

第一步由

   0x08048d6e <+13>:	call   0x8048fe0 <string_length>   0x08048d73 <+18>:	cmp    $0x6,%eax   0x08048d76 <+21>:	je     0x8048dc2 <phase_5+97>   0x08048d78 <+23>:	call   0x8049225 <explode_bomb>

得到要输入六个字符

第二步,设置断点

   0x08048d82 <+33>:	movzbl (%ebx,%eax,1),%edx

随便输入一个6 长度字符串进行调试

设置断点b *0x08048d82,测试123456 ,停在断点处。

ebx 中存放的是123456 继续执行读取ecx 寄存器为7

读取0x804a243 得到falmes

之后读取0x804a26c 得到maduiersnfotvbylSo you think you can stop the bomb

对应input[i]&0xf ,只会对应查表求出input[i] 即可,有不同的情况。

这里我采用io10e7

char input&0xf input[i]

f 9 i

l 15 o

a 1 1

m 0 0

e 5 e

s 7 7

  • 完成截图

image-20210527235240308

6. phase_6

  • 思路
   0x08048dcf <+0>:		push   %ebp   0x08048dd0 <+1>:		mov    %esp,%ebp   0x08048dd2 <+3>:		push   %esi   0x08048dd3 <+4>:		push   %ebx   0x08048dd4 <+5>:		sub    $0x40,%esp   0x08048dd7 <+8>:		lea    -0x20(%ebp),%eax   0x08048dda <+11>:	mov    %eax,0x4(%esp)   0x08048dde <+15>:	mov    0x8(%ebp),%eax   0x08048de1 <+18>:	mov    %eax,(%esp)   0x08048de4 <+21>:	call   0x8049267 <read_six_numbers>   0x08048de9 <+26>:	mov    $0x0,%esi   0x08048dee <+31>:	mov    -0x20(%ebp,%esi,4),%eax   0x08048df2 <+35>:	sub    $0x1,%eax   0x08048df5 <+38>:	cmp    $0x5,%eax   0x08048df8 <+41>:	jbe    0x8048dff <phase_6+48>   0x08048dfa <+43>:	call   0x8049225 <explode_bomb>   0x08048dff <+48>:	add    $0x1,%esi   0x08048e02 <+51>:	cmp    $0x6,%esi   0x08048e05 <+54>:	jne    0x8048e0e <phase_6+63>   0x08048e07 <+56>:	mov    $0x0,%ebx   0x08048e0c <+61>:	jmp    0x8048e46 <phase_6+119>   0x08048e0e <+63>:	mov    %esi,%ebx   0x08048e10 <+65>:	mov    -0x20(%ebp,%ebx,4),%eax   0x08048e14 <+69>:	cmp    %eax,-0x24(%ebp,%esi,4)   0x08048e18 <+73>:	jne    0x8048e1f <phase_6+80>   0x08048e1a <+75>:	call   0x8049225 <explode_bomb>   0x08048e1f <+80>:	add    $0x1,%ebx   0x08048e22 <+83>:	cmp    $0x5,%ebx   0x08048e25 <+86>:	jle    0x8048e10 <phase_6+65>   0x08048e27 <+88>:	jmp    0x8048dee <phase_6+31>   0x08048e29 <+90>:	mov    0x8(%edx),%edx   0x08048e2c <+93>:	add    $0x1,%eax   0x08048e2f <+96>:	cmp    %ecx,%eax   0x08048e31 <+98>:	jne    0x8048e29 <phase_6+90>   0x08048e33 <+100>:	jmp    0x8048e3a <phase_6+107>   0x08048e35 <+102>:	mov    $0x804c154,%edx   0x08048e3a <+107>:	mov    %edx,-0x38(%ebp,%esi,4)   0x08048e3e <+111>:	add    $0x1,%ebx   0x08048e41 <+114>:	cmp    $0x6,%ebx   0x08048e44 <+117>:	je     0x8048e5d <phase_6+142>   0x08048e46 <+119>:	mov    %ebx,%esi   0x08048e48 <+121>:	mov    -0x20(%ebp,%ebx,4),%ecx   0x08048e4c <+125>:	cmp    $0x1,%ecx   0x08048e4f <+128>:	jle    0x8048e35 <phase_6+102>   0x08048e51 <+130>:	mov    $0x1,%eax   0x08048e56 <+135>:	mov    $0x804c154,%edx   0x08048e5b <+140>:	jmp    0x8048e29 <phase_6+90>   0x08048e5d <+142>:	mov    -0x38(%ebp),%ebx   0x08048e60 <+145>:	lea    -0x34(%ebp),%eax   0x08048e63 <+148>:	lea    -0x20(%ebp),%esi   0x08048e66 <+151>:	mov    %ebx,%ecx   0x08048e68 <+153>:	mov    (%eax),%edx   0x08048e6a <+155>:	mov    %edx,0x8(%ecx)   0x08048e6d <+158>:	add    $0x4,%eax   0x08048e70 <+161>:	cmp    %esi,%eax   0x08048e72 <+163>:	je     0x8048e78 <phase_6+169>   0x08048e74 <+165>:	mov    %edx,%ecx   0x08048e76 <+167>:	jmp    0x8048e68 <phase_6+153>   0x08048e78 <+169>:	movl   $0x0,0x8(%edx)   0x08048e7f <+176>:	mov    $0x5,%esi   0x08048e84 <+181>:	mov    0x8(%ebx),%eax   0x08048e87 <+184>:	mov    (%eax),%eax   0x08048e89 <+186>:	cmp    %eax,(%ebx)   0x08048e8b <+188>:	jle    0x8048e92 <phase_6+195>   0x08048e8d <+190>:	call   0x8049225 <explode_bomb>   0x08048e92 <+195>:	mov    0x8(%ebx),%ebx   0x08048e95 <+198>:	sub    $0x1,%esi   0x08048e98 <+201>:	jne    0x8048e84 <phase_6+181>   0x08048e9a <+203>:	add    $0x40,%esp   0x08048e9d <+206>:	pop    %ebx   0x08048e9e <+207>:	pop    %esi   0x08048e9f <+208>:	pop    %ebp   0x08048ea0 <+209>:	ret       

读取p/x *(0x804c154)@3 按顺序读取之后得到

第六个节点的尾指针为0 所以是降序排列1 5 6 3 2 4

1 799 1

2 183 5

3 374 6

4 173 3

5 739 2

6 417 4

  • 完成截图
  • 我觉得我的答案是对的但是不对,我不知道怎么做了所以空着

7. 最终结果

  • bomblab 完成截图

image-20210528002856103

  • (可选)bomblab 隐藏关卡

8. 备注

助教真帅,拆炸弹真刺激,就是有点难。

第六个我觉得我对了。

posted @ 2021-08-05 10:41  shangjin2001  阅读(190)  评论(0)    收藏  举报