다양한 툴에 대한 활용도를 높이고자 이번 주차에는 Basic RCE 03 문제를 풀이하였다.
문제에 있는 파일을 다운받는다.
프로그램을 실행해보려 하였으나 일반적인 실행 뿐 아니라 올리디버거를 이용한 실행도 되지 않았다.
[참고] 비주얼 베이직은 윈도우 프로그램 개발에 쓰임 즉, 윈도우 운영체제에서 동작하는 프로그램을 만드는 것임.
대표적인 예: MS office,한글 등등
+이러한 프로그램을 만들기위해 비주얼 베이직은 "윈도우 폼(form)"이라는 개발환경에서GUI를 만듦
* GUI란?
- 그래픽 사용자 인터페이스라 말하며 사용자에게 텍스트 뿐만 아니라 그래픽 이미지로도 정보를 보여주거나 입력 받기 위한 방법으로, 프로그램 실행시 보이는 화면
비주얼 베이직은 .net(닷넷)언어 중 하나인데, 닷넷 언어란 우리가 흔히 알고 있는 visual studio 안에 있는 언어들이다. 인터넷을 연결하고자 개발한 통합환경이라 생각하면 된다. Visual basic 은 그 중 하나이고 Visual basic은 "독립적인" 언어이다. C#,C++,java 가 아니라 "Basic언어"라는 것이 따로 존재한다
01그러면, 이러한 비쥬얼 베이직 언어중에 스트링 비교함수를 찾으면 된다. 그건 바로 StrComp( 문자열1, 문자열2, [비교 방법] )이것이다.
그럼 못해도 StrComp나 그 일부가 들어있는 열을 찾는 다면 힌트가 될 수 있을 거라고 생각해볼 수 있다.
정답을 찾게 되었다
02
다른 풀이법도 존재한다.
이것은 2번처럼 뭔가 잘못된 것이 아니라, 말그대로 MSVBVM50.DLL이 컴터에 설치가 안되어있어서 뜨는것이다.
대부분 환경에서 저러한 문구가 뜨는듯 하다.
그러니 여기서 다운받아 설치해주면 된다
그담에 그 파일을 실행시키면
확인을 누르면
이곳에 아무 문자열이나 넣으면 에러창이 나온다.
올리 디버거로 열어보면 아래와 같은 화면이 나온다.
함수를 모두 보기 위해 실행에서 오른쪽 버튼을 눌러 Search for>All intermodular calls 해주면 프로그램에서 사용하고 있는 함수들을 보여준다.
여러 함수 중 vbaStrCmp같은 함수를 더블클릭하여 주변으로 이동한다.
아래는 위 내용을 해석한 것이다.
PUSH DWORD PTR SS :[EBP - 58]
=>EBP0x58에 있는 double word를 읽고 push
=> EBP -58이라는 주소에서 4바이트 크기의 메모리 내용 이라는 뜻
참고) dword ptr 은 해당 주소에서 double word(32비트(4byte)) 를 읽겠다는 뜻
PUSH 03.00301DDC UNICODE "2G83G35Hs2"
=> 스택에 2G83G35Hs2를 쌓는다
=> 2G83G35Hs2을 Push
참고) push는 operand값을 스택에 저장해주는 명령어 ex.PUSH [operand]
CALL <JMP.&MSVBVM50.vbaStrCmp>
=> PUSH한 두개를 문자열 비교
=> msvbvm50.dll에 속한 vbaStrCmp 함수를 call
1. 내가 입력한 값 push
2. 패스워드 값 push
3. 함수를 통해 두개를 비교 동일하면 성공 틀리면 실패 표시
004028BA : 자신이 입력한 코드(A)를 스택에 push하고
004028BD : 패스워드(2G83G35Hs2)를 스택에 push한다음
004028C2 : A와 2G83G35Hs2를 비교한다음 같으면 성공표시, 틀리면 실패표시가 뜨도록 값을 리턴한다.
따라서 2G83G35Hs2을 입력해주면 문제가 해결된다.
'4-9. 2020-2 심화 스터디 > 네트워크 포렌식 또는 해킹사고 분석' 카테고리의 다른 글
[2020.11.28] [DigitalForensic] with CTF 네트워크 문제풀이 (0) | 2020.11.28 |
---|---|
[2020.11.21] [DigitalForensic] with CTF 네트워크 문제풀이 (0) | 2020.11.21 |
[2020.11.07] XSS game 문제풀이 (0) | 2020.11.08 |
[2020.09.19] 스틸리언 지원서 작성 (0) | 2020.10.09 |