티스토리 뷰

CodeEngn Basic RCE의 3번 문제입니다.






비주얼 베이직에서의 스트링 비교함수 이름을 묻는 문제이군요.


간단한 구글링으로도 찾을 수 있습니다.


일단 파일을 다운로드 받아보겠습니다.






'03.exe'라는 이름의 파일입니다.


실행시켜보겠습니다.






만약 이런 에러가 뜬다면 컴퓨터에 'MSVBVM50.DLL'이 없어서 그러니 아래 링크에서 다운로드 받아주시면 됩니다.


https://support.microsoft.com/ko-kr/help/180071/file-msvbvm50-exe-installs-visual-basic-5-0-run-time-files


(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'와 비교해서 같으면 성공창을, 다르면 에러창을 띄우도록 리턴값을 조정합니다.


프로그램 분석도 마쳤으니 이제 코드엔진 홈페이지에 비주얼 베이직에서의 스트링 비교 함수를 인증해주면...







댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함