#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

+ Recent posts