일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Tree/AVL
- Tree/RBTree
- tree
- Tree/BST
- CS/자료구조/Queue
- forensic
- codeengn
- reversing
- ctf
- 리버싱
- Tree/AVL/Deletion
- CS/자료구조/Circular_Linked_List
- CS/자료구조/Priority_Queue
- UTCTF
- CS/자료구조/Linked_List
- Tree/AVL/Insertion
- CS/자료구조/Stack
- 코드엔진
- CS/자료구조/Singly_Linked_List
- Tree/Binary_Search_Tree
- CS/자료구조/Doubly_Linked_List
- Tree/RBTree/Insertion
- CS/자료구조/Circular_Queue
- Tree/RBTree/Deletion
- Tree/Binary_Tree
- Tree/Traversal
- Today
- Total
목록Wargame[워게임]/CodeEngn (21)
SuperVingo

1. 실행화면 위쪽에는 User Nickname을, 아래는 Serial를 입력하도록 되어있는 것 같다. 잘못된 시리얼 입력 시, 이 뜬다. 2. ExeInfoPE 분석 UPX로 패킹이 되어있다. 3. UPX 언패킹 upx.exe -d (파일 위치)를 통해 언패킹을 진행했다. 4. 올리디버거 분석 올디디버거에서 실행 후, Search For -> All referenced strings를 선택하면 사용된 문자열을 찾을 수 있다, 문자열에 보니 예상되는 닉네임과 시리얼이 보였다. 이게 끝이다;;

0. 시작 하기 전.... 이번 문제는 CodeEngn.com Basic RCE L03 문제와 거의 비슷하게(비슷도 아니다. 거의 똑같다.) 풀 수 있으므로, 직접 풀어보는 것도 좋다. 1. 실행화면 2. ExeInfoPE 분석 패킹 되어있지 않고, C/C++로 작성된 것으로 보인다. 3. 올리디버거 분석 이번에도 특정 역할의 함수를 찾는 문제이기에, Basic RCE L03에서 사용했던 Search For -> All Intermodular Calls를 통해 찾아본다. 이번에도 딱 봐도 이름이 디버거 감지하게 생겼다.

0. 시작 전... 실행 시키니까 MSVBVM50.DLL이 없다는 에러가 뜬다. 위와 같은 창이 뜰 경우, 이 파일을 프로그램과 같은 파일에 넣거나, 각자의 환경에 맞춰서 32비트는 C:\Windows\System32, 64비트는 C:\Windows\SysWOW64에 넣고 실행하면 된다. 1. 실행 화면 독일어 같다. 일단 넘기자. 2. ExeInfoPE 분석 어떠한 패킹도 되어있지 않다. 3. 올리디버거 분석 올리디버거로 연 후, Search For -> All Intermodular Calls를 통해 호출되는 함수를 보니, 누가 봐도 이름이 문자열 비교함수다. 그리고, Arg1이 예상 비밀번호로 보인다. 입력해보니 다른 창이 떴다. 파파고가 맞답니다. 네.

1. 실행화면 실행이 되지않는다. 2-1. ExeInfoPE 분석 분석도 안된다. 2-2. PEView 분석 똑같이 분석이 되지 않는 모습이다. 3. HxD PE 헤더가 잘못되있는 것으로 유추, 실행이나 디버거 연결이 불가능하다고 판단 후, HxD로 열어 확인하였다. 그러다 성공 문자열을 발견했고, 그 뒤에 있는 문자가 정답이라고 유추했다.

1. 실행화면 2. ExeInfoPE 분석 크게 얻을 수 있는 정보는 없다. 3-1. 올리디버거 분석 GetDriveTypeA의 리턴값 이후, 연산을 진행하여 분기됨. HDD는 DRIVE_FIXED, 즉 3이 리턴값이고, CD-ROM의 경우에는 DRIVE_CDROM, 즉 5가 리턴된다. EAX(GetDriveTypeA의 return value)는 -2, ESI는 +3 후, 비교하여 분기를 진행한다. 3-2. Ghidra 분석 Ghidra를 통해 실행하면 디컴파일된 코드를 볼 수 있었다. 위 올리 디버거와 같이 GetDriveTypeA의 Return value에 -2, ESI에 +3 연산 후, 비교하여 분기된다. GetDriveTypeA에 DAT_00402094가 인자로 들어갔고, 이는 c:\인것을 알 수..