#About
Author : Blaster99 [DCD]
Korean :
비주얼베이직에서 스트링 비교함수 이름은?
English :
What is the name of the Visual Basic function that compares two strings?
#Contents
해당 문제는 문자열을 찾을 수 있는지에 대한 물음과 함수의 이름을 유추해 알아낼 수 있는 방법을 묻는 문제임
#Solution
[그림 1] - 초기 실행 화면
해당 문제를 실행하게 되면 Regcode를 입력하고 등록하는 GUI 환경의 프로그램을 확인할 수 있다
[그림 2] - 임의의 값 입력
[그림 3] - The Password is wrong
임의의 값을 입력하고 등록버튼을 누르게 되면 패스워드 에러를 확인할 수 있다. 에러를 통해 유추해 볼 수 있는 프로그램의
구조는 사용자 입력 값과 프로그램 내에 저장되어 있는 값과 일치하는지에 대해 비쥬얼베이직 스트링 비교함수를 사용해 검증함을 생각해볼 수 있다
그렇다면 사용자 입력 값과 일치하는 값을 먼저 찾은 뒤, 그 뒤에 올 어셈블리코드에 적힌 스트링 비교함수를 찾으면 문제를 해결할 수 있을 것 같다
분석을 위해 올리디버거로 열어 보았다
[그림 4] - 올리디버거로 열어본 프로그램의 메인
메인함수로 가기 위해 단축키 F9를 누르면 위와 같은 코드를 확인할 수 있음
[그림 5] - 코드에 참조되는 문자열을 보여주는 기능
코드 값이 프로그램내에 Static 또는 사용자 입력 값과 코드 값을 인증하는 서버의 주소가 저장이 되있을거라 생각하고
그것을 표현하는 스트링 값을 찾기위해 위와 같이 Search for > All referenced text strings 옵션을 사용해주었다
[그림 6] - 의심스러운 문자열
해당 프로그램에 존재하는 문자열을 읽어 내려가다보면 마지막 부분에 유니코드로 2G83G35Hs2로 적힌 값이 보였으며
한 칸 아래의 문자열과 함께 미루어 보아 코드 값이라 생각들어 더블클릭을 통해 해당코드가 적힌 부분으로 따라가보았다
[그림 7] - vbaStrCmp 함수 호출
코드 값을 2G83G35Hs2를 PUSH 명령을 통해 스택에 넣고 CALL 명령을 통해 vbaStrCmp 함수를 호출 함을 확인할 수 있었다
vb=visual basic
Str=String
Cmp=Compare
비쥬얼베이직 문자열 비교
[그림 8] - 인증
'Wargame' 카테고리의 다른 글
CodeEngn Basic 5 (0) | 2017.09.08 |
---|---|
CodeEngn Basic 4 (0) | 2017.09.05 |
CodeEngn Basic 2 (0) | 2017.09.04 |
CodeEngn Basic 1 (0) | 2017.09.04 |
[STEGANOGRAPHY] Codegate 2013 - Forensic 300 (0) | 2017.07.21 |