티스토리 뷰
CodeEngn Basic RCE의 3번 문제입니다.
비주얼 베이직에서의 스트링 비교함수 이름을 묻는 문제이군요.
간단한 구글링으로도 찾을 수 있습니다.
일단 파일을 다운로드 받아보겠습니다.
'03.exe'라는 이름의 파일입니다.
실행시켜보겠습니다.
만약 이런 에러가 뜬다면 컴퓨터에 'MSVBVM50.DLL'이 없어서 그러니 아래 링크에서 다운로드 받아주시면 됩니다.
(MSVBVM50.DLL은 Visual Basic 5.0으로 만든 응용 프로그램을 실행 하는데 필요한 파일입니다.)
'MSVBVM50.DLL'을 다운로드 받고 다시 파일을 실행시켜보면
이런 창들이 순서대로 뜨는데 두 번째 창에 아무 문자열이나 집어넣으면
에러 메시지가 뜹니다.
이제 올리디버거로 열어 보겠습니다.
올리디버거에는 해당 프로그램에서 사용하고 있는 함수들을 보여주는 기능이 있는데
위 사진처럼 'All intermodular calls'를 누르면 됩니다.
그러면 이렇게 많은 함수들이 나오는데 바로 스트링 비교 함수가 눈에 보입니다.
더블 클릭해서 저 함수가 사용되는 구역으로 들어가면
이곳으로 오게 되는데
바로 이 세 줄이 입력받은 문자열을 비교하는 부분입니다.
세 줄을 간단하게 해석해 보자면
00402A27 - EBP-0x58에 있는 doble word를 읽고 PUSH
00402A2A - '2G83G35Hs2'를 PUSH
00402A2F - PUSH한 두개를 문자열 비교
입니다.
정확하게 보기 위해 00402A27에 브레이크 포인트를 걸고 한 줄씩 실행해 보겠습니다.
아무 의미없는 'asdf'를 넣겠습니다.
그러면 이렇게 스택창에 'asdf'가 저장되는데요.
'2G83G35Hs2'가 아니므로 에러창을 띄우네요.
이번에는 '2G83G35Hs2'를 입력해보겠습니다.
성공창을 띄우네요.
그러니까 이 프로그램은 입력받은 문자열을 '2G83G35Hs2'와 비교해서 같으면 성공창을, 다르면 에러창을 띄우도록 리턴값을 조정합니다.
프로그램 분석도 마쳤으니 이제 코드엔진 홈페이지에 비주얼 베이직에서의 스트링 비교 함수를 인증해주면...
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn] Basic RCE - Level 06 풀이 (108) | 2017.11.01 |
---|---|
[CodeEngn] Basic RCE - Level 05 풀이 (98) | 2017.10.30 |
[CodeEngn] Basic RCE - Level 04 풀이 (111) | 2017.10.30 |
[CodeEngn] Basic RCE - Level 02 풀이 (0) | 2017.10.17 |
[CodeEngn] Basic RCE - Level 01 풀이 (0) | 2017.10.15 |
- Total
- Today
- Yesterday
- Reversing
- 안드로이드
- Android
- Advance RCE
- 17th HackingCamp CTF
- Level 04
- reversing.kr
- Level 06
- wargame
- ftz
- Programming
- Level 03
- Level 02
- Basic RCE
- pwnable
- 멘토링
- 유니티
- xcz.kr
- Level 01
- c++
- CodeEngn
- 풀이
- Level 05
- 안드로이드 멘토링
- HackingCamp
- Unity
- hackerschool
- C#
- unity2d
- Write-up
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |