또 뭐하지

[Dreamhack] rev-basic-6 본문

Write-up/Reversing

[Dreamhack] rev-basic-6

mameul 2024. 5. 14. 00:51
728x90

풀이

main 함수이다. 필요한 sub_140001000 함수를 살펴보자.

sub_140001000를 살펴보면 byte_140003020 배열의 a1[i]번째의 값이 byte_140003000[i] 값과 동일하면 correct가 출력된다는 것을 알 수 있다. 

 

 

byte_140003020 값과 byte_140003000 값을 가져온다

a = "63 7C 77 7B F2 6B 6F C5 30 01 67 2B FE D7 AB 76 CA 82 C9 7D FA 59 47 F0 AD D4 A2 AF 9C A4 72 C0 B7 FD 93 26 36 3F F7 CC 34 A5 E5 F1 71 D8 31 15 04 C7 23 C3 18 96 05 9A 07 12 80 E2 EB 27 B2 75 09 83 2C 1A 1B 6E 5A A0 52 3B D6 B3 29 E3 2F 84 53 D1 00 ED 20 FC B1 5B 6A CB BE 39 4A 4C 58 CF D0 EF AA FB 43 4D 33 85 45 F9 02 7F 50 3C 9F A8 51 A3 40 8F 92 9D 38 F5 BC B6 DA 21 10 FF F3 D2 CD 0C 13 EC 5F 97 44 17 C4 A7 7E 3D 64 5D 19 73 60 81 4F DC 22 2A 90 88 46 EE B8 14 DE 5E 0B DB E0 32 3A 0A 49 06 24 5C C2 D3 AC 62 91 95 E4 79 E7 C8 37 6D 8D D5 4E A9 6C 56 F4 EA 65 7A AE 08 BA 78 25 2E 1C A6 B4 C6 E8 DD 74 1F 4B BD 8B 8A 70 3E B5 66 48 03 F6 0E 61 35 57 B9 86 C1 1D 9E E1 F8 98 11 69 D9 8E 94 9B 1E 87 E9 CE 55 28 DF 8C A1 89 0D BF E6 42 68 41 99 2D 0F B0 54 BB 16"
a = a.split()


b = "00 4D 51 50 EF FB C3 CF 92 45 4D CF F5 04 40 50 43 63 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "
b = b.split()[:18]

tmp = []

for i in range(18):
    k = a.index(b[i])
    tmp.append(k)

for i in range(18):
    print(chr(tmp[i]),end='')

b( byte_140003000 ) 값을 가져와서 a ( byte_140003020 ) 리스트에서 찾아 그 인덱스를 tmp에 저장하는 코드를 작성하였다. 

파이썬 코드를 작동시켜보면 이와 같은 결과가 나온다. 

파일을 실행해 확인해보면 맞는 값인 것을 확인할 수 있다. 

'Write-up > Reversing' 카테고리의 다른 글

[Dreamhack] rev-basic-8  (0) 2024.05.14
[Dreamhack] rev-basic-7  (0) 2024.05.14
[Dreamhack] rev-basic-5  (0) 2024.05.14
[Dreamhack] rev-basic-4  (0) 2024.05.13
[Dreamhack] rev-basic-3  (0) 2024.05.13