[XCZ.KR] 34번 풀이
Wargame/XCZ.KR

[XCZ.KR] 34번 풀이

 

 

문제 종류 - Forensic(Programming)
사용한 툴 - ILSpy
Flag, Hint, 정답 형식

flag: ?

hint: X

정답 형식: ?

 

풀이

문제에 들어가면 zip 하나가 주어진다. 압축을 풀어보자.

압축을 풀면 account.dat, getthepw.exe가 있다. 먼저 account.dat 파일을 열어보자.

대충 봐서는 ID:md5_encoding_key:PW의 형태로 나타나 있는 듯 하다.

이제 getthepw.exe를 실행해보자.

ID와 PW에 admin, 31337을 입력해보자.

아니란다. 답을 얻기 위해서는 가운데 md5 문자열이 무엇인지 알아내야 할 듯 하다.

ILSpy를 이용해 getthepw.exe를 디버깅 해보자.

우선 PW의 입력값이 소문자, 숫자로 이루어진 5글자인지 확인한다. 아니라면 메시지박스를 출력한다.

이제 같은 경로에 있는 account.dat에 들어있는 값을 읽어온다.

읽어올 때는 배열에 저장하며, :를 기준으로 split 해준다. 예를 들면 이렇다.

 

array[0] = admin

array[1] = md5A0F60D70FAD9DC9846D971FD61D2B7A0

array[2] = 31337

 

이제 array[0]값, PW의 입력 값, array[2]값을 문자열로 합치고 MD5 함수로 들어간다.

for문에서 해당 길이만큼 16진수로 변환시켜준다.

그 후, 나온 값과 array[1]의 값이 같고 ID의 입력 값이 admin이면 답을 출력한다.

아마도 PW의 입력 값을 구하면 해결되는 문제인 것 같다.

 

PW의 조건이 정해져 있으니, Bruteforing 해보자.

문제에서 주어진 MD5Hash를 그대로 사용하기 위해서는 C# 언어를 사용해야 한다.

일부러 잘 안보이게 해놨다. 여러분들이 직접 생각하고 코드를 작성해보길 바란다.

알아야 할 사실은 한 자리의 들어갈 key값의 경우의 수는 36개 이므로 총 경우의 수는 $36^5$ 이다.

코드를 작성해 답을 구했다면, 이제 flag를 획득할 수 있다.

'Wargame > XCZ.KR' 카테고리의 다른 글

[XCZ.KR] 26번 풀이  (0) 2020.05.15
[XCZ.KR] 35번 풀이  (5) 2020.05.13
[XCZ.KR] 36번 풀이  (0) 2020.05.05
[XCZ.KR] 32번 풀이  (0) 2020.05.02
[XCZ.KR] 30번 풀이  (0) 2020.05.02