Ouaih, on est au level4, c’est la moitié du challenge, super :>
Bon en fait c’est exactement le même procédé que le level2… rien de plus, ce qui nous laisse au moins 3 méthodes pour le résoudre.
Comme au level2 j’ai utilisé ltrace, je vais prendre gdb sur celui-ci.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 80484cc: e8 cb fe ff ff call 804839c <fgets@plt> 80484d1: 8d 45 f5 lea 0xfffffff5(%ebp),%eax 80484d4: 89 44 24 04 mov %eax,0x4(%esp) 80484d8: 8d 85 f5 fe ff ff lea 0xfffffef5(%ebp),%eax 80484de: 89 04 24 mov %eax,(%esp) 80484e1: e8 76 fe ff ff call 804835c <strcmp@plt> 80484e6: 85 c0 test %eax,%eax 80484e8: 75 26 jne 8048510 <do_stuff+0x8c> 80484ea: c7 04 24 08 87 04 08 movl $0x8048708,(%esp) 80484f1: e8 96 fe ff ff call 804838c <puts@plt> 80484f6: c7 04 24 ec 03 00 00 movl $0x3ec,(%esp) 80484fd: e8 6a fe ff ff call 804836c <seteuid@plt> 8048502: c7 04 24 1c 87 04 08 movl $0x804871c,(%esp) 8048509: e8 6e fe ff ff call 804837c <system@plt> 804850e: eb 0c jmp 804851c <do_stuff+0x98> 8048510: c7 04 24 24 87 04 08 movl $0x8048724,(%esp) 8048517: e8 70 fe ff ff call 804838c <puts@plt> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | (gdb) b * 0x080484e1 Breakpoint 1 at 0x80484e1 (gdb) r Starting program: /wargame/level4 Enter the password> lolilol Breakpoint 1, 0x080484e1 in do_stuff () (gdb) x/2x $esp 0xbffff8c0: 0xbffff8dd 0xbffff9dd (gdb) x/s 0xbffff8dd 0xbffff8dd: "lolilol\n" (gdb) x/s 0xbffff9dd 0xbffff9dd: "snlprintf\n" (gdb) |
Voilà, on a le password du binaire (snlprintf), on ré-execute et on a un shell setuid level5, on va lire le fichier /home/level5/.passwd et c’est fini.
next?lol
