Outils d'utilisateurs

Outils du Site


csaw2012_quals:reversing:csaw2012reversing.exe

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

csaw2012_quals:reversing:csaw2012reversing.exe [2017/04/09 15:33] (Version actuelle)
Ligne 1: Ligne 1:
 +===== csaw2012reversing.exe =====
  
 +==== Overview ====
 +
 +Dans cette épreuve, on nous fournit un exécutable Windows (qui se révèle être un fichier natif).
 +
 +==== First step ====
 +
 +Le challenge est fourni avec un fichier de symbole ce qui nous permet de connaitre des informations clefs (comme le noms des fonctions).
 +
 +<file asm main.asm>00391070 >/$ 55             PUSH EBP
 +00391071  |. 8BEC           MOV EBP,ESP
 +00391073  |. 83EC 58        SUB ESP,58
 +00391076  |. A1 38303900    MOV EAX,DWORD PTR DS:[__security_cookie]
 +0039107B  |. 33C5           XOR EAX,EBP
 +0039107D  |. 8945 FC        MOV DWORD PTR SS:[EBP-4],EAX
 +00391080  |. C645 E8 88     MOV BYTE PTR SS:[EBP-18],88
 +00391084  |. C645 E9 9A     MOV BYTE PTR SS:[EBP-17],9A
 +00391088  |. C645 EA 93     MOV BYTE PTR SS:[EBP-16],93
 +0039108C  |. C645 EB 9C     MOV BYTE PTR SS:[EBP-15],9C
 +00391090  |. C645 EC 90     MOV BYTE PTR SS:[EBP-14],90
 +00391094  |. C645 ED 92     MOV BYTE PTR SS:[EBP-13],92
 +00391098  |. C645 EE 9A     MOV BYTE PTR SS:[EBP-12],9A
 +0039109C  |. C645 EF A0     MOV BYTE PTR SS:[EBP-11],0A0
 +003910A0  |. C645 F0 8B     MOV BYTE PTR SS:[EBP-10],8B
 +003910A4  |. C645 F1 90     MOV BYTE PTR SS:[EBP-F],90
 +003910A8  |. C645 F2 A0     MOV BYTE PTR SS:[EBP-E],0A0
 +003910AC  |. C645 F3 9C     MOV BYTE PTR SS:[EBP-D],9C
 +003910B0  |. C645 F4 8C     MOV BYTE PTR SS:[EBP-C],8C
 +003910B4  |. C645 F5 9E     MOV BYTE PTR SS:[EBP-B],9E
 +003910B8  |. C645 F6 88     MOV BYTE PTR SS:[EBP-A],88
 +003910BC  |. C645 F7 DE     MOV BYTE PTR SS:[EBP-9],0DE
 +003910C0  |. C645 F8 00     MOV BYTE PTR SS:[EBP-8],0
 +003910C4  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
 +003910C7  |. 50             PUSH EAX                                 ; /Arg1
 +003910C8  |. E8 33FFFFFF    CALL csaw2012.encrypt                    ; \encrypt
 +003910CD  |. 83C4 04        ADD ESP,4
 +003910D0  |. 68 00303900    PUSH csaw2012.00393000                   ; /src = "Encrypted Key:  "
 +003910D5  |. 8D4D A8        LEA ECX,DWORD PTR SS:[EBP-58]            ; |
 +003910D8  |. 51             PUSH ECX                                 ; |dest
 +003910D9  |. E8 8A000000    CALL csaw2012._strcpy                    ; \_strcpy
 +003910DE  |. 83C4 08        ADD ESP,8
 +003910E1  |. 8D55 E8        LEA EDX,DWORD PTR SS:[EBP-18]
 +003910E4  |. 52             PUSH EDX                                 ; /src
 +003910E5  |. 8D45 A8        LEA EAX,DWORD PTR SS:[EBP-58]            ; |
 +003910E8  |. 50             PUSH EAX                                 ; |dest
 +003910E9  |. E8 74000000    CALL csaw2012._strcat                    ; \_strcat
 +003910EE  |. 83C4 08        ADD ESP,8
 +003910F1  |. 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
 +003910F3  |. 68 14303900    PUSH csaw2012.00393014                   ; |Title = "Key!"
 +003910F8  |. 8D4D A8        LEA ECX,DWORD PTR SS:[EBP-58]            ; |
 +003910FB  |. 51             PUSH ECX                                 ; |Text
 +003910FC  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
 +003910FE  |. FF15 AC203900  CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
 +00391104  |. 6A FF          PUSH -1                                  ; /status = FFFFFFFF (-1.)
 +00391106  |. FF15 A0203900  CALL DWORD PTR DS:[<&MSVCR100.exit>]     ; \exit
 +0039110C  |. 8D55 E8        LEA EDX,DWORD PTR SS:[EBP-18]
 +0039110F  |. 52             PUSH EDX                                 ; /Arg1
 +00391110  |. E8 1BFFFFFF    CALL csaw2012.decrypt                    ; \decrypt
 +00391115  |. 83C4 04        ADD ESP,4
 +00391118  |. 68 1C303900    PUSH csaw2012.0039301C                   ; /src = "Decrypted Key:  "
 +0039111D  |. 8D45 A8        LEA EAX,DWORD PTR SS:[EBP-58]            ; |
 +00391120  |. 50             PUSH EAX                                 ; |dest
 +00391121  |. E8 42000000    CALL csaw2012._strcpy                    ; \_strcpy
 +00391126  |. 83C4 08        ADD ESP,8
 +00391129  |. 8D4D E8        LEA ECX,DWORD PTR SS:[EBP-18]
 +0039112C  |. 51             PUSH ECX                                 ; /src
 +0039112D  |. 8D55 A8        LEA EDX,DWORD PTR SS:[EBP-58]            ; |
 +00391130  |. 52             PUSH EDX                                 ; |dest
 +00391131  |. E8 2C000000    CALL csaw2012._strcat                    ; \_strcat
 +00391136  |. 83C4 08        ADD ESP,8
 +00391139  |. 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
 +0039113B  |. 68 30303900    PUSH csaw2012.00393030                   ; |Title = "Key!"
 +00391140  |. 8D45 A8        LEA EAX,DWORD PTR SS:[EBP-58]            ; |
 +00391143  |. 50             PUSH EAX                                 ; |Text
 +00391144  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
 +00391146  |. FF15 AC203900  CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
 +0039114C  |. 6A 00          PUSH 0                                   ; /status = 0
 +0039114E  |. FF15 A0203900  CALL DWORD PTR DS:[<&MSVCR100.exit>]     ; \exit
 +00391154  |. 8B4D FC        MOV ECX,DWORD PTR SS:[EBP-4]
 +00391157  |. 33CD           XOR ECX,EBP
 +00391159  |. E8 10000000    CALL csaw2012.__security_check_cookie
 +0039115E  |. 8BE5           MOV ESP,EBP
 +00391160  |. 5D             POP EBP
 +00391161  \. C3             RETN</file>
 +
 +Ici, il existe deux fonctions intéressant, encrypt et decrypt.
 +Seul problème, la fonction decrypt est incessible à cause d'un appel à exit() (00391106).
 +Pour sauter cette instruction, il suffit simplement de la "nopper".
 +
 +<file asm exit.asm>00DB1104     90             NOP
 +00DB1105     90             NOP
 +00DB1106     90             NOP
 +00DB1107     90             NOP
 +00DB1108     90             NOP
 +00DB1109     90             NOP
 +00DB110A     90             NOP
 +00DB110B     90             NOP</file>
 +
 +Et voilà, c'est terminé !
 +
 +<file>Decrypted Key:  welcome_to_csaw!</file>
csaw2012_quals/reversing/csaw2012reversing.exe.txt · Dernière modification: 2017/04/09 15:33 (modification externe)