무기는 끈기

[wargame / Dreamhack] 'Reversing Basic Challenge #1' 문제 write-up / 티오리 본문

Hacking/Wargame

[wargame / Dreamhack] 'Reversing Basic Challenge #1' 문제 write-up / 티오리

김유비야 2023. 10. 19. 21:30

챙겨 보고 있는 티오리의 '노베이스 해킹 입문' 시리즈가 올라왔다!

퇴근길에 보면서 집가서 빨리 실습해야지.. 했다.

이번 주제는 '리버싱'이다. 사실 해킹 분야에서 가장 관심 있는 분야라 영상 알림 받고 소리지를 뻔했다.

IDA 해킹 툴을 이용한 실습이라서 더 즐거웠다.

https://youtu.be/cOxQK4Gxmq4?si=FaLTFzDk9XC28ORy

 

동욱님이 생각보다 너무 잘하셔서 노베이스 맞아?! 하고 의심스러웠다 ㅋㅋㅋㅋ
다훈 쓴배림 정말 설명도 잘해주시고 늘 다정한 선생님이 되어주셔서 감동입니다.. 자주 올려주세요ㅠ

 

아무튼 IDA Pro는 천만원이 넘는 초고가의 기업용 툴이기에 가난한 나는 IDA Free 를 사용한다.

툴 다운로드 받는 곳은 하단의 링크 참고
https://hex-rays.com/ida-free/

 

IDA Free

IDA Free The free binary code analysis tool to kickstart your reverse engineering experience.

hex-rays.com

 

아무튼 본론으로 들어가서.. 

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

 

rev-basic-1

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

dreamhack.io

 

이번에 풀 문제는 이것이다.

이 문제는 사용자에게 문자열 입력을 받아 정해진 방법으로 입력값을 검증하여 correct 또는 wrong을 출력하는 프로그램이 주어집니다.
해당 바이너리를 분석하여 correct를 출력하는 입력값을 알아내세요.
획득한 입력값은 DH{} 포맷에 넣어서 인증해주세요.
예시) 입력 값이 Apple_Banana일 경우 flag는 DH{Apple_Banana}

 

다른 워게임 문제들은 [서버 생성하기] 버튼이 있어서 문제를 다운받지 않고도 풀 수 있었는데, 이번 문제는 IDA 를 사용하는 리버스 엔지니어링 이니 만큼 [서버 생성하기] 기능없이 문제를 다운 받아서 풀어야 했다.

다운받으면 압축파일이 받아지고, 해당 파일의 압축을 풀면 'chall1.exe' 라는 실행파일이 뜬다.

* exe : Microsoft Windows 운영 체제에서 실행할 수 있는 프로그램이나 응용 프로그램을 포함하는 이진 파일 형식입니다. 이 파일은 컴퓨터의 하드웨어에서 직접 실행될 수 있는 명령어와 데이터로 구성되며, 사용자가 프로그램을 실행하면 컴퓨터의 중앙 처리 장치(CPU)가 이 파일을 읽고 프로그램을 실행합니다. 따라서 exe 파일은 Windows에서 소프트웨어나 애플리케이션을 실행하는 데 사용됩니다.

 

 

해당 실행파일을 IDA를 켜서 화면에 드래그앤드롭을 시켜줍니다.

IDA에 디컴파일 된 chall1.exe 이 뜬다.

 

가운데 화면에 보이는 건 어지러운 어셈블리어 이다.

아직은 이걸 보고 해석할 순 없으니.. Tab 키를 눌러 C언어와 비슷하게 바꿔보자.

 

훨씬 알아듣기 쉬운 모양새가 됐다.

int, main, char, sub 등등.. 해당 소스코드를 하나씩 더블클릭해서 내부를 뜯어봤다.

 

if ~ put("Correct"); 사이에 있는 sub_140001000 부분이 의심스럽기 때문에 더블클릭해준다.

 

이런 화면이 나온다. 어쩐지 하나하나 뜯어보면 뭔가가 나올 것 같은 모양새다.

 

10진수로 나와있는 데이터들, 즉 67, 111 등을 우클릭하면 16진수(Hexadecimal), Char(캐릭터) 등으로 바꿔볼 수 있다.

아까 이 화면으로 넘어오기 이전 화면에 Char 라는 키워드가 써있었던 게 기억이 나서 Char로 변환해보았다.

 

10진수였던 아이들이 점점 문자로 변하기 시작했다. 단축기 커맨드 R을 눌러 전부 바꿔보자.

 

텍스트를 하나하나 옮겨보니 이런 문장 아닌 문장이 완성되었다.

Flag 공식을 더해보자.

 

오타가 있어 수정하고~ Flag 창에 입력 후 정답임을 확인하였다.

 

굿~