본문 바로가기

Study/Reverse Engineering

dreamhack : rev-basic-6 writeup

728x90

https://dreamhack.io/wargame/challenges/20

 

rev-basic-6

Reversing Basic Challenge #6 이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다. 해당 바이너리를 분석하여 correct를 출

dreamhack.io

 

step1. main함수 분석

입력하고 입력값이 맞으면 Correct, 틀리면 Wrong 출력하는 함수이다.

 

step2. main 내부 함수 분석

sub_140001000함수

8비트 값을 byte_140003020 배열의 인덱스로 사용하고 있음. 해당 인덱스 위치에서 값을 가져옴

byte_140003020 data는 아래와 같음

byte_140003020

byte_140003000은 0~18까지 인덱스위치에 있는 값을 가져옴.

byte_140003000

 

내가 이해한 것은 이중 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전까지 드래그해서 플래그 제출했더니 얻을 수 있었다.

 

'Study > 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