'll Hacker
dreamhack : rev-basic-6 writeup 본문
Contents
728x90
https://dreamhack.io/wargame/challenges/20
step1. main함수 분석
입력하고 입력값이 맞으면 Correct, 틀리면 Wrong 출력하는 함수이다.
step2. main 내부 함수 분석
sub_140001000함수
8비트 값을 byte_140003020 배열의 인덱스로 사용하고 있음. 해당 인덱스 위치에서 값을 가져옴
byte_140003020 data는 아래와 같음
byte_140003000은 0~18까지 인덱스위치에 있는 값을 가져옴.
내가 이해한 것은 이중 for문 돌려서
예를 들면 3000[0]과 3020[0]~3020[255] 이런식으로 비교하면서 같으면 result에 append하는 것으로 이해했다.
이것을 파이썬 코드로 구현하면?
byte_140003020 = bytes.fromhex("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")
byte_140003000 = bytes.fromhex("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")
result = []
for i in range(len(byte_140003000)):
a1_i = byte_140003020.index(byte_140003000[i])
result.append(a1_i)
result = bytes(result)
print(result)
결과 ▼
이런식으로 나왔는데 전체 플래그 제출했는데 잘못된 정답이라고 해서 \x전까지 드래그해서 플래그 제출했더니 얻을 수 있었다.
728x90
'Hacking > Reverse Engineering' 카테고리의 다른 글
dreamhack : secure-mail writeup (2) | 2024.06.01 |
---|---|
dreamhack : rev-basic-8 write-up (0) | 2024.06.01 |
dreamhack : rev-basic-4 write-up (1) | 2024.05.29 |
dreamhack : rev-basic-2 write-up (0) | 2024.05.15 |
dreamhack : simple-operation write-up (0) | 2024.05.13 |