Ubuntu 16.04.3 LTS 64bit OS를 새로 설치했는데 파일 컴파일이 안 돼서 난감해하던 중, 구글링을 해보니 gcc-multilib가 필요하단 것을 알았습니다. gcc-multilib은 64bit 리눅스에서 32bit 컴파일을 할 수 있도록 해주는 것입니다. 아래 명령어로 간단하게 문제를 해결할 수 있습니다. sudo dpkg --add-architecture i386sudo apt-get install gcc-multilib
CodeEngn Basic RCE의 15번 문제입니다. Name값이 CodeEngn일때의 Serial을 구하는 문제입니다. 프로그램을 다운로드 받아보겠습니다. '15.exe'라는 이름의 파일입니다. 실행시켜보면.. Name값으로 CodeEngn을, Serial값으로 1을 주었더니 실패 문자열이 출력되었습니다. 먼저 PEID로 패킹이 되어있는지 살펴보겠습니다. 패킹은 되어있지 않습니다. 그렇다면 바로 올리디버거로 보겠습니다. 성공 문자열 바로 위에 성공과 실패를 가르는 조건문이 있습니다. EAX값과 45B844 주소의 저장된 4byte만큼의 값을 비교하는군요. 비교문인 458831에 BP를 걸고 실행시켜보겠습니다. Name값으로는 CodeEngn을, Serial값으로는 1을 입력하고 체크하겠습니다. 458..
CodeEngn Basic RCE의 14번 문제입니다. 해당 프로그램의 Name값이 CodeEngn 일 때 Serial값을 구하는 문제입니다. 프로그램을 다운로드 받겠습니다. '14.exe'라는 이름의 파일입니다. 실행시켜보면.. 틀린 값을 입력하고 체크하니 실패 문자열이 출렸되었습니다. 먼저 PEID로 파일의 정보를 확인하겠습니다. UPX로 패킹 되어있습니다. 빠르게 UPX 언패킹 툴로 언패킹 하겠습니다. 언패킹을 성공했습니다. 이제 올리디버거로 분석하겠습니다. 이 프로그램은 입력받은 Name값을 이용해서 Serial값을 생성해서 입력한 Serial값과 비교하는 프로그램인 것 같습니다. 그러니 성공 문자열 주변에 입력받은 Serial값과 프로그램에서 Name값을 이용해서 생성한 Serial값을 비교하는..
CodeEngn Basic RCE의 13번 문제입니다. 해당 프로그램의 정답을 찾아내는 문제입니다. 프로그램을 다운로드 받겠습니다. '13.exe'라는 이름의 파일입니다. 실행을 시켜보면.. 틀린 패스워드를 입력하니 실패 문자열이 나옵니다. 먼저 PEID로 파일의 정보를 보겠습니다. C#으로 작성되었고, 패킹은 되어있지 않네요. 올리디버거로 열어보겠습니다. 올리디버거로 열리지 않습니다. 왜냐하면, C#으로 작성된 파일은 닷넷 프레임워크가 없는 환경에서는 분석할 수 없기 때문입니다. 닷넷 프레임 워크(.NET Framework)란, 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경입니다. 주요 지원 언어로는 C#, C++, F#, DLR, Delphi.NET, Visual Basic .NET이 ..
CodeEngn Basic RCE의 12번 문제입니다. Key 값과 Key 값이 메세지 박스에 출력도록 수정해야 하는 주소영역을 구하는 문제입니다. 먼저 프로그램을 다운로드 받아보겠습니다. '12.exe'라는 이름의 파일입니다. 쓰레기통 모양의 아이콘이네요. 프로그램을 실행시켜보면.. 잘못된 Key 값을 입력하고 Check 창을 눌러봤더니 변화가 없습니다. 먼저 PEID로 파일의 정보를 보겠습니다. 패킹은 되어있지 않네요. 바로 올리디버거로 분석해보겠습니다. 문자열 중에 성공 문자열로 보이는 문자열이 보입니다. 클릭해서 저 문자열이 사용되는 위치로 가보겠습니다. 성공 문자열 위에 GetDlgItemInt 함수가 있는 것으로 보아 사용자가 입력한 숫자와 Key 값을 비교하는 형식으로 보입니다. GetDlg..
CodeEngn Basic RCE의 11번 문제입니다. 해당 프로그램의 OEP와 Stolenbyte를 찾는 문제입니다. 먼저 프로그램을 다운로드 받겠습니다. '11.exe'라는 이름의 파일입니다. 실행시켜보면.. 어? 어딘가 익숙하다 했더니 9번 문제와 같은 프로그램이었습니다. 이미 분석 해본 거라 복습한다는 느낌으로 분석하겠습니다. 먼저 PEID로 파일의 정보를 확인하겠습니다. UPX 패킹이 되어있습니다. 언패킹을 하면서 OEP와 Stolenbyte를 찾겠습니다. 맨 밑 점프문을 통해서 본래 코드가 있는 곳으로 이동하겠습니다. OEP 주소위가 비어있습니다. 저곳이 Stolenbyte가 있어야 할 자리입니다. 가장 마지막 점프문 위에, POPAD 밑에 있는 PUSH문 3개가 Stolenbyte입니다. S..
CodeEngn Basic RCE의 10번 문제입니다. 해당 프로그램의 OEP를 구한 후 "등록성공"으로 가는 분기점의 OPCODE를 구하는 문제입니다. ※OPCODE(연산코드)란? 프로세서가 수행 할 연산과 실행 할 동작을 정의하는 코드입니다. 올리디버거로 열었을 때 Hex dump 칸에 있는 코드들이 OPCODE입니다. 먼저 파일을 다운로드 받겠습니다. '10.exe'라는 이름의 파일입니다. 실행시켜보면.. 이런 창이 뜹니다. 이제 프로그램 분석을 시작하겠습니다. 먼저 PEID로 파일의 정보를 확인하겠습니다. ASPack 패킹이 되어있습니다. 올리디버거로 직접 언패킹을 해보겠습니다. 올리디버거로 열고 Ctrl + F 를 눌러서 'retn 0c'를 검색해줍니다. RETN 0xC 밑에 있는 두 줄에 BP..
CodeEngn Basic RCE의 9번 문제입니다. 해당 프로그램의 StolenByte를 구하는 문제입니다. ※StolenByte란? 패커가 위치를 이동시킨 코드로써 보호된 프로그램 코드의 윗부분입니다. 이동된 코드들은 OEP 주소로 점프하기 전에 PUSH 됩니다. 이 부분의 명령어는 할당받은 메모리 공간에서 실행됩니다. 만약 StolenByte를 복구하지 못하고 덤프한다면 실행 파일이 작동하지 않을 수 있습니다. 먼저 파일을 다운로드 받아보겠습니다. '09.exe'라는 이름의 파일입니다. 실행시켜보면.. 위와 같은 메시지를 띄웁니다. 이제 프로그램 분석을 시작하겠습니다. 먼저 PEID로 파일의 정보를 보겠습니다. UPX로 패킹 되어 있군요. UPX 언패킹 툴로 언패킹 한 뒤 실행시켜보겠습니다. Sto..
CodeEngn Basic RCE의 8번 문제입니다. 해당 프로그램의 OEP를 구하는 문제입니다. 먼저 프로그램을 다운로드 받아보겠습니다. '08.exe'라는 이름의 파일입니다. 실행시켜보겠습니다. 평범한 계산기 프로그램입니다. 먼저 PEID로 확인해보겠습니다. UPX로 패킹이 되어있습니다. 올리디버거로 직접 언패킹을 해보겠습니다. 언패킹을 완료했습니다. 이제 OEP를 알 수 있습니다. 알아낸 OEP를 코드엔진 사이트에 인증 해보면...
CodeEngn Basic RCE의 7번 문제입니다. 컴퓨터 C 드라이브 이름이 CodeEngn 일 때 시리얼이 생성되는데 CodeEngn은 어떤 것으로 변경되는지를 구하는 문제입니다. 파일을 다운로드 받아보겠습니다. '07.exe'라는 이름의 파일입니다. 일단 실행시켜보겠습니다. 너의 시리얼이 옳지 않다고 하네요. 문제에서 C 드라이브의 이름이 CodeEngn 일 때 시리얼이 생성된다고 했으니까 C 드라이브 이름을 바꾸어주겠습니다. C 드라이브 이름을 CodeEngn으로 바꾸었습니다. PEID로 열어보니 어셈블리어로 짠 프로그램이군요. 올리디버거로 열어보겠습니다. 어셈블리어로 만들어서 그런지 코드가 눈에 더 잘 들어오네요. 문자열을 살펴보겠습니다. 실패 문자열과 성공 문자열이 보입니다. 성공 문자열을 ..
CodeEngn Basic RCE의 6번 문제입니다. Unpack을 하고 Serial을 구하는 문제입니다. 파일을 다운로드 받아보겠습니다. '06.exe'라는 이름의 파일입니다. 실행시켜보겠습니다. Serial이 틀렸을시 "Wrong serial!!!"을 띄우네요. 분석하기 전에 먼저 PEID로 파일의 정보를 확인해보겠습니다. UPX로 패킹되어 있습니다. 올리디버거로 직접 언패킹 해서 저장하겠습니다. ('[CodeEngn] Basic RCE - Level 05 풀이' 참조) UPX 언패킹을 완료했습니다. 이제 올리디버거로 파일을 분석해보겠습니다. 문자열을 살펴보려 했는데 문자열이 보이지 않습니다. 분명히 아까 실패 문자열을 띄웠었는데 말이죠. 그렇다면 Back to User 모드를 사용하여 실패 문자열을..
CodeEngn Basic RCE의 5번 문제입니다. 해당 프로그램의 등록키를 구하는 문제입니다. 파일을 다운로드 받아보겠습니다. '05.exe'라는 이름의 파일입니다. 실행시켜보겠습니다. 그럼 먼저 PEID로 05.exe의 정보를 보겠습니다. UPX로 패킹이 되어있군요. 분석하기 전에 먼저 언패킹을 해야 합니다. UPX 파일을 언패킹 하려면 툴을 써도 되지만 이번에는 올리디버거에서 직접 언패킹을 해보도록 하겠습니다. UPX 패킹은 코드 맨밑에 OEP로 가는 점프문이 있습니다. 이 점프문을 타고 들어가면 패킹 되기전의 코드가 나오고 이 코드를 저장해주시면 됩니다. 이것이 패킹되기 전의 코드입니다. Rebulild Import를 체크 해제하시고 OllyDump 플러그인으로 저장시켜줍니다. Rebulild를..
CodeEngn Basic RCE의 4번 문제입니다. 디버거를 탐지하는 함수의 이름을 묻는 문제입니다. 파일을 다운로드 받아보겠습니다. '04.exe'라는 이름의 실행파일입니다. 실행시켜보겠습니다. 계속해서 '정상'이라는 문자열을 출력하고 있습니다. 그럼 이제 올리디버거로 열어 보겠습니다. 디버거로 열었더니 계속해서 '디버깅 당함'이라는 문자열을 출력합니다. 문제에 나와 있는 대로 해당 프로그램에 디버거를 감지하는 함수가 있어서 디버거로 열었을 때만 다른 문자열이 나오는 것 같습니다. 함수 목록을 확인해보겠습니다. 'IsDebuggerPresent'라는 함수가 보입니다. 검색해보니 IsDebuggerPresent란 PEB 구조체의 디버깅 상태 값을 확인하여 디버깅을 당하고 있다면 1을, 아닐 경우 0을 ..
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'을 다운로..
CodeEngn Basic RCE의 2번 문제입니다. 손상된 파일의 패스워드를 찾아내는 문제이군요. 파일을 다운로드 받아보겠습니다. '02.exe'라는 이름의 파일입니다. 실행시켜보겠습니다. 역시 손상된 파일답게 실행할 수가 없네요. 문제에서 파일을 분석하라 했으니 헥스 에디터로 분석해보겠습니다. 헥스 에디터로 열어본 모습입니다. 내용을 살펴보면 우리가 알고 있는 함수들이 보이네요. 그 바로 밑엔 이런 문자열들이 있습니다. 대충 감이 오지 않나요? ㅎㅎ 감으로 생각한 문자열을 코드엔진 사이트에 인증 해보면..
- Total
- Today
- Yesterday
- Level 01
- Level 02
- CodeEngn
- Reversing
- HackingCamp
- Advance RCE
- Level 06
- Level 04
- 유니티
- 17th HackingCamp CTF
- Programming
- Level 05
- ftz
- 풀이
- Level 03
- 멘토링
- reversing.kr
- Write-up
- 안드로이드 멘토링
- Unity
- c++
- Basic RCE
- Android
- C#
- wargame
- 안드로이드
- hackerschool
- pwnable
- unity2d
- xcz.kr
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |