Binary Bomb Lab Phase 6 : I was caught up in the last part

206 Views Asked by At

This is asm code for binary bomb Phase_6.

00000000004010ca <phase_6>:
  4010ca:   41 56                   push   %r14
  4010cc:   41 55                   push   %r13
  4010ce:   41 54                   push   %r12
  4010d0:   55                      push   %rbp
  4010d1:   53                      push   %rbx
  4010d2:   48 83 ec 50             sub    $0x50,%rsp
  4010d6:   48 8d 74 24 30          lea    0x30(%rsp),%rsi
  4010db:   e8 68 04 00 00          callq  401548 <read_six_numbers>
  4010e0:   4c 8d 64 24 30          lea    0x30(%rsp),%r12
  4010e5:   4d 8d 74 24 14          lea    0x14(%r12),%r14
  4010ea:   41 bd 01 00 00 00       mov    $0x1,%r13d
  4010f0:   eb 28                   jmp    40111a <phase_6+0x50>
  4010f2:   e8 1b 04 00 00          callq  401512 <explode_bomb>
  4010f7:   eb 30                   jmp    401129 <phase_6+0x5f>
  4010f9:   e8 14 04 00 00          callq  401512 <explode_bomb>
  4010fe:   48 83 c3 01             add    $0x1,%rbx
  401102:   83 fb 05                cmp    $0x5,%ebx
  401105:   7f 0b                   jg     401112 <phase_6+0x48>
  401107:   8b 44 9c 30             mov    0x30(%rsp,%rbx,4),%eax
  40110b:   39 45 00                cmp    %eax,0x0(%rbp)
  40110e:   75 ee                   jne    4010fe <phase_6+0x34>
  401110:   eb e7                   jmp    4010f9 <phase_6+0x2f>
  401112:   49 83 c5 01             add    $0x1,%r13
  401116:   49 83 c4 04             add    $0x4,%r12
  40111a:   4c 89 e5                mov    %r12,%rbp
  40111d:   41 8b 04 24             mov    (%r12),%eax
  401121:   83 e8 01                sub    $0x1,%eax
  401124:   83 f8 05                cmp    $0x5,%eax
  401127:   77 c9                   ja     4010f2 <phase_6+0x28>
  401129:   4d 39 f4                cmp    %r14,%r12
  40112c:   74 05                   je     401133 <phase_6+0x69>
  40112e:   4c 89 eb                mov    %r13,%rbx
  401131:   eb d4                   jmp    401107 <phase_6+0x3d>
  401133:   be 00 00 00 00          mov    $0x0,%esi
  401138:   8b 4c b4 30             mov    0x30(%rsp,%rsi,4),%ecx
  40113c:   b8 01 00 00 00          mov    $0x1,%eax
  401141:   ba f0 42 60 00          mov    $0x6042f0,%edx
  401146:   83 f9 01                cmp    $0x1,%ecx
  401149:   7e 0b                   jle    401156 <phase_6+0x8c>
  40114b:   48 8b 52 08             mov    0x8(%rdx),%rdx
  40114f:   83 c0 01                add    $0x1,%eax
  401152:   39 c8                   cmp    %ecx,%eax
  401154:   75 f5                   jne    40114b <phase_6+0x81>
  401156:   48 89 14 f4             mov    %rdx,(%rsp,%rsi,8)
  40115a:   48 83 c6 01             add    $0x1,%rsi
  40115e:   48 83 fe 06             cmp    $0x6,%rsi
  401162:   75 d4                   jne    401138 <phase_6+0x6e>
  401164:   48 8b 1c 24             mov    (%rsp),%rbx
  401168:   48 8b 44 24 08          mov    0x8(%rsp),%rax
  40116d:   48 89 43 08             mov    %rax,0x8(%rbx)
  401171:   48 8b 54 24 10          mov    0x10(%rsp),%rdx
  401176:   48 89 50 08             mov    %rdx,0x8(%rax)
  40117a:   48 8b 44 24 18          mov    0x18(%rsp),%rax
  40117f:   48 89 42 08             mov    %rax,0x8(%rdx)
  401183:   48 8b 54 24 20          mov    0x20(%rsp),%rdx
  401188:   48 89 50 08             mov    %rdx,0x8(%rax)
  40118c:   48 8b 44 24 28          mov    0x28(%rsp),%rax
  401191:   48 89 42 08             mov    %rax,0x8(%rdx)
  401195:   48 c7 40 08 00 00 00    movq   $0x0,0x8(%rax)
  40119c:   00 
  40119d:   bd 05 00 00 00          mov    $0x5,%ebp
  4011a2:   eb 09                   jmp    4011ad <phase_6+0xe3>
  4011a4:   48 8b 5b 08             mov    0x8(%rbx),%rbx
  4011a8:   83 ed 01                sub    $0x1,%ebp
  4011ab:   74 11                   je     4011be <phase_6+0xf4>
  4011ad:   48 8b 43 08             mov    0x8(%rbx),%rax
  4011b1:   8b 00                   mov    (%rax),%eax
  4011b3:   39 03                   cmp    %eax,(%rbx)
  4011b5:   7d ed                   jge    4011a4 <phase_6+0xda>
  4011b7:   e8 56 03 00 00          callq  401512 <explode_bomb>
  4011bc:   eb e6                   jmp    4011a4 <phase_6+0xda>
  4011be:   48 83 c4 50             add    $0x50,%rsp
  4011c2:   5b                      pop    %rbx
  4011c3:   5d                      pop    %rbp
  4011c4:   41 5c                   pop    %r12
  4011c6:   41 5d                   pop    %r13
  4011c8:   41 5e                   pop    %r14
  4011ca:   c3                      retq   

This requires analysis to enter 6 non-identical numbers, less than 6 and separated by spaces. like %d %d %d %d %d %d.

So I entered 1 2 3 4 5 6, and try until *0x04011a2.

(gdb) until *0x04011a2
0x00000000004011a2 in phase_6 ()
1: x/i $pc
=> 0x4011a2 <phase_6+216>:      jmp    0x4011ad <phase_6+227>
(gdb) x/3x $rbx
0x6042f0 <node1>:       0x000002d8      0x00000001      0x00604300
(gdb) x/3x *($rbx+8)
0x604300 <node2>:       0x000003cf      0x00000002      0x00604310
(gdb) x/3x *(*($rbx+8)+8)
0x604310 <node3>:       0x00000369      0x00000003      0x00604320
(gdb) x/3x *(*(*($rbx+8)+8)+8)
0x604320 <node4>:       0x000001cc      0x00000004      0x00604330
(gdb) x/3x *(*(*(*($rbx+8)+8)+8)+8)
0x604330 <node5>:       0x00000265      0x00000005      0x00604340
(gdb) x/3x *(*(*(*(*($rbx+8)+8)+8)+8)+8)
0x604340 <node6>:       0x00000294      0x00000006      0x00000000

Based on the above results, I entered 4 5 6 1 3 2 and 2 3 1 6 5 4 but both blew up. What am I wrong? Unlike other similar bomblab phase_6 problems, there does not appear to be any parts that show such as f(x) = N - x...

Did I misunderstand something and solve it?

0

There are 0 best solutions below