Security_RNRF

리버싱 기본 IDA Pro 활용법 본문

Reversing

리버싱 기본 IDA Pro 활용법

RNRF 2022. 10. 27. 11:00

DreamHack 사이트의 리버싱 문제를 이용하여 IDA Pro 활용 방법을 설명한다.

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

 

rev-basic-2

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

dreamhack.io

 

사용자가 어떤 값을 입력했을 때, 해당 입력 값에 따라 Correct와 Wrong이 출력된다.
즉, Correct 문자열이 뜨게 만들면 문제가 해결된다.

Shift+F12

[문자열 검색(= Shift+F12)] 기능을 이용하여, "Correct" 문자열을 검색한다.
그리고 해당 문자열을 따라가본다.(= 더블클릭)

[call 함수 따라가기(= X - Xref)] 기능을 이용하여, 해당 함수 및 변수가 참조되는 영역을 재참조한다.

[HexRay(= F5)] 기능을 이용하여, 디컴파일한다.

F5

디컴파일한 C코드에서 printf와 scanf로 예상되는 함수 "sub_1400011B0"와 "sub_140001210"을 [함수/변수명 바꾸기(= N)] 기능을 이용하여 편의를 위해 변경해준다.
그리고 if 조건문에 있는 "sub_140001000" 함수를 확인해본다.

확인 결과, for문을 0x12(16진수)번 반복한다. 즉, 10진수로 18번 반복한다.
이때 if 조건문을 확인해보면, "aC"라는 주소를 사용자의 입력 값과 비교하고 있다.
"aC" 주소에 있는 문자를 확인해본다.

"aC" 주소부터 4개씩 18번 뒤까지 flag가 있음을 알 수 있다.

 

더보기

FLAG : Comp4r3_the_arr4y

 

'Reversing' 카테고리의 다른 글

IDA 단축키 정리  (0) 2022.10.27
리버스 엔지니어링 참고 블로그 정리  (0) 2022.08.31
Comments