일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- AjouUniv #Whois #Reversing
- AjouUniv #Whois #정보보안교육
- systemhacking
- AjouUniv #SuniNatas #Web
- python
- Whois #AjouUniv #정보보안교육 #Pwnable
- AjouUniv #Whois #정보보안교육 #Pwnable
- N0Named
- ftz
- Whois #정보보안교육 #AjouUniv #Pwnable
- 아주대학교
- 아주대학교 #Whois #정보보안교육 #4주차
- hackerschool
- 스케줄링
- N0NamedWargame #mandu-mandu #forensics #left_side_B
- Allocation Starategy
- 운영체제
- 코딩도장
- Pwnable
- Whois #정보보안교육 #Ajou
- 사이버보안학과
- N0NamedWargame #AjouUniv #mandu-mandu #forensics
- SuNiNaTaS #mandu-mandu #AjouUniv #forensics
- HackCTF
- N0NamedWargame #mandu-mandu #forensics #길에서주어온만두
- Variable Partition
- Dreamhack
- webhacking
- Whois #정보보안교육 #webhacking.kr
- Memory Virtualization
- Today
- Total
chipkkang9's story
[Reversing.kr] Easy Crack 문제 write-up 본문
문제소개
문제풀이
이번에 푼 문제는 리버싱 스터디에서 과제로 정해진
Reversing.kr의 Easy Crack 문제이다.
문제를 들어가보면, Easy_CrackMe.exe 파일을 다운받아진다.
「리버싱 핵심원리」도서에 있는대로 ollydbg를 사용하고 싶었지만,
오래된 프로그램이라 UI가 익숙하지 않아 x32dbg를 사용하였다.
디버거로 파일을 열고 F9버튼을 누르면
프로그램이 시작되는 지점으로 넘어간다.
EntryPoint라고 주석처리되어있는 부분이 프로그램의 시작점이다.
여기서 한 번 더 F9을 눌러주면 프로그램이 켜진다.
그리고 입력창에 아무 문자열이나 입력해주면
이렇게 팝업창이 뜨게 된다.
이렇게 저렇게 봐도 입력창에 올바른 문자열을 넣어주면
문제가 해결되는 간단한 문제같다.
그럼 다시 디버거로 돌아와서
디버거의 최상단으로 올라가보겠다.
가장 낮은 주소인 00401000부터 BP(BreakPoint)를 걸고
F8을 통해서 하나하나 내려가보면,
00401010의 call ~~ &DialogBoxParamA는
위의 그림처럼 프로그램 창을 띄우는 함수이다.
그리고 00401070 주소의 함수 뒤에 이어지는
00401080 주소에도 BP를 걸고 다시 처음부터 프로그램을 실행시키면,
(프로그램 창이 띄워지면 확인 버튼을 누르는 단계를 거쳐야 한다.)
00401080의 함수 주소부터 내려가면서 분석해보면,
004010B5, 004010CD, ... 등등 문자열을 비교하는 jne(비교 함수)가 있는 것으로 보아
문자열을 입력해준 후, 해당 주소에 함수들이 문자열을 비교하여
옳을 때는 Congratulation !!, 틀릴 때는 Incorrect Password
를 출력하는 것을 알 수 있다.
문제의 생김새는 쉬운 것이라 생각되지만,
여기서 살짝 내가 시간이 걸렸던 것은 문자열을 차례대로 비교하는 것이 아니라
2번째 문자부터 끝까지 비교하고, 다시 처음으로 돌아온다는 것이다.
004010B0에서 esp+5 주소에 0x61(a)와 비교한다.
004010CD에서 esp+A 주소에 406078(5y)와 비교한다.
004010F2에서 esp+10주소에 40606C(R3versing)과 비교한다.
그리고 0040110D에서 esp+4 주소에 0x45(E)와 비교한다.
키워드들을 주소의 순서에 맞게 나열해주면,
Ea5yR3versing
이 정답임을 알 수 있다.
이를 입력해주면,
예쁘게 정답이 나오는 것을 알 수 있다.
'CTF > Reversing' 카테고리의 다른 글
[Whois 정보보안교육] EasyReverseMe 문제풀이 (0) | 2021.11.08 |
---|---|
[Whois 정보보안교육] RootMe PE x86 - 0 protection 풀이 (0) | 2021.11.08 |