문제:비주얼베이직에서 스트링 비교함수 이름은?
사실 이 문제는 검색으로도 답을 충분히 찾아낼 수 있지만 Ollydbg를 이용한 분석으로 답을 구해보겠습니다.
일단 Ollydbg로 분석하기 전에 프로그램을 실행시켜줍니다.
실행해보면 이렇게 오류가 발생합니다.
MSVBVM50.DLL을 다운로드하고 진행하겠습니다.
드디어 실행을 시키면 이런 창이 뜹니다.
확인을 눌러보겠습니다.
패스워드를 입력하는 창이 뜹니다.
아무 문자열이나 넣어보겠습니다.
당연하게도 실패메시지가 뜨게 됩니다.
이제 Ollydbg를 이용해서 문제를 분석해보겠습니다.
F8을 이용해서 한 줄씩 실행시키는 것은 시간이 많이 걸리므로 문자열 검색 기능을 이용해보겠습니다.
문자열 검색 기능은 Code Window를 우클릭하고 Search for - All reference text string으로 사용할 수 있습니다.
문자열 검색 기능을 사용한 모습입니다.
프로그램을 실행시켰을 때 나왔던 문자열을 찾을 수 있습니다.
Enter키나 더블클릭으로 문자열이 있는 위치로 이동할 수 있습니다.
실패메시지 위에 패스워드로 추정되는 문자열이 있습니다.
패스워드로 추정되는 문자열의 아랫줄에 vbaStrCmp라는 함수가 있습니다.
BP를 걸고 F9로 실행해보겠습니다.
간단한 문자열을 넣어보겠습니다.
그러면 브레이크포인트를 건 부분에서 멈춥니다.
PUSH를 이용해서 스택에 입력한 문자열인 asdf를 넣는 것을 확인할 수 있습니다.
그리고 2G83G35Hs2를 PUSH하고 vbaStrCmp함수를 실행합니다.
실행시키면 실패메시지가 뜹니다.
이제 패스워드로 추정되는 문자열을 넣어보겠습니다.
이 부분은 성공메시지를 출력하는 부분입니다.
문자열 검색 기능을 이용해서 찾을 수 있습니다.
스택에 입력한 문자열인 2G83G35Hs2를 스택에 넣는 것을 확인할 수 있습니다.
실행시키면 성공메시지를 띄웁니다.
이것을 통해서 vbaStrCmp가 두 문자열을 비교하는 함수라는 사실을 유추할 수 있습니다.
실제로도 그렇습니다.
Flag: vbaStrCmp
'CodeEngn Write Up > Basic' 카테고리의 다른 글
CodeEngn Basic RCE L06 Write Up (0) | 2021.09.29 |
---|---|
CodeEngn Basic RCE L05 Write Up (0) | 2021.09.23 |
CodeEngn Basic RCE L04 Write Up (0) | 2021.09.16 |
CodeEngn Basic RCE L02 Write Up (0) | 2021.09.16 |
CodeEngn Basic RCE L01 Write Up (1) | 2021.09.15 |