Basic RCE L03

hoon·2023년 5월 20일
0

CodeEngn

목록 보기
3/21

문제

비주얼베이직에서 스트링 비교함수 이름은?
우선 해당 프로그램을 실행할려면 MSVBVM50.DLL이 필요하니 구글에서 찾아서 다운로드 받아 프로그램과 같은 경로에 두도록 하자. 프로그램을 실행시키면 다음과 같이 나오는 것을 확인할 수 있다.
시작 메시지

확인 클릭 시 창

test1234 입력 후 오류 메시지

IDA 분석

문자열 확인 시 스트링 비교함수 이름같이 생긴 함수를 찾을 수 있다.

코드 부분을 따라가다보면 "2G83G35Hs2" 문자열과 [ebp-0x58]을 스택에 넣고 vbaStrCmp를 호출하는 것을 확인 가능하다.

실제 프로그램에 해당 문자열을 넣어보면

패스워드가 맞다는 알림이(독일어로) 뜬다.

x86dbg 분석

사이트에 정답은 vbaStrCmp가 맞고 x86dbg로 동적 분석을 한번 해보자
f9로 EntryPoint에 바로 갈 수 있다.
문자열 참조

패스워드 부분 클릭해 해당 주소로 가면 vbaStrCmp를 호출하는 것을 확인할 수 있고

해당 함수를 클릭해 함수에 breakpoint를 걸겠다.

이후 프로그램에 패스워드를 입력하고 실행하면 vbaStrCmp가 호출되며 문자열을 비교하는 것을 확인할 수 있다.

처음 문제를 풀 때에는 entrypoint위에 함수가 위치한 것도 한몫했지만 함수를 클릭하지 않고 문자열이 위치한 주소인 0x4028c2에 breakpoint를 걸었더니 동작하는 것 잘 찾지 못해 시간을 낭비했다. ㅋㅋ

0개의 댓글