Hackerschool FTZ의 Level 1 풀이입니다. 접속해보면 'hint'라는 파일이 있습니다. 파일을 읽어보면, 라고 출력이 됩니다. 알맞은 명령어로 찾아주겠습니다. 위 명령어를 해석해보면, / 경로부터 소유자 권한이 level2 권한 중 4000대인 것을 찾으면서 에러는 null로 처리하라는 뜻입니다. 그래서 ExecuteMe를 실행시켜보면, 라고 출력이 됩니다. my-pass가 안되므로 sh를 실행시킨 후 my-pass를 하면.. Key : hacker or cracker
Reversing.kr의 문제 CSHARP입니다. 문제 이름처럼 C# 문제입니다. 문제 파일을 실행시켜보면, 알맞은 정답을 알아내면 되는 문제입니다. dnSpy로 문제 파일을 분석하겠습니다. 'MetMett'라는 함수가 있는데 동적으로 호출되고 있어서 호출도 안 되고 디버깅도 안 됩니다. .ctor은 프로그램이 실행되면 자동으로 실행되는데, 이곳에서 MetMett 함수를 복호화시켜주는 것으로 보이는 코드를 찾았습니다. 이 부분에 BP를 걸고 복호화 후에 값을 확인해보겠습니다. 정말 MetMett 함수 부분의 값이 바뀌었습니다. 복호화된 부분을 그대로 복사해서 HxD에서 수정해주겠습니다. HxD에서 MetMett 함수 부분의 값을 수정했습니다. 이제 프로그램을 다시 dnSpy로 열어서 확인해보면.. Met..
2018 HackingCamp CTF의 SWAP WORLD라는 문제입니다. 문제 파일을 IDA로 분석하던 중에 이상한 문자열을 찾았습니다. 상당히 수상해 보이네요. 저 문자열이 사용되는 곳으로 가보겠습니다. 수상한 문자열을 복호화 시켜준 뒤 출력시켜 주네요. 아마 flag 같습니다. 위 코드를 이용해서 저 문자열을 복호화시켜주는 코드를 짜보겠습니다. print bytearray([x^5 for x in bytearray("MFDHU~\\5pZNkjrZ!RDUZRJWIAx")]) 이 코드를 실행시켜보면.. flag가 출력됩니다!
2018 HackingCamp CTF의 PPAP라는 문제입니다. 문제 파일이 jar 파일이네요. 자바 디컴파일러로 열어보겠습니다. 그런데 아무것도 보이지 않네요.. CFR 자바 디컴파일러로 직접 문제 파일의 소스코드를 추출하겠습니다. 숫자들이 담겨있는 엄청나게 긴 배열이 나왔습니다. 저 배열 안에 있는 숫자들을 문자로 바꾸고 파일로 만들어보겠습니다. 배열 안에 있는 숫자들과 0xff를 & 연산해주어서 문자로 만든 뒤 arrby.class 파일에 저장했습니다. arrby.class 파일의 내용을 확인해보겠습니다. 입력받은 문자열의 길이와 내용이 flag와 같다면 배열 안에 있는 값들을 복호화시켜준 뒤 flag를 출력하는 프로그램이군요. 이 코드를 이용해서 flag를 출력해주는 코드를 짜보겠습니다. from..
2018 HackingCamp CTF의 CSdroid라는 문제입니다. "이것은 자바?" 제가 이 문장 때문에 자바 코드 쪽을 봐야 하는 문제인 줄 알고 삽질 엄청 했죠.. ㅠㅠ 파일을 다운로드 받으면 CSdroid라는 apk 파일이 나옵니다. 이 파일을 가상 안드로이드 환경에서 실행시켜주면, 이런 화면이 나옵니다. 체크 버튼을 누르면 "WRONG"이라는 문자열밖에 출력되지 않습니다. apk 파일 안에 여러 개의 dll 파일들이 있는데 그중에 CSdroid.dll 파일을 분석해보겠습니다. MainActivity를 보니 flag가 출력될 수 없게 되어있네요. 저 코드를 이용해서 flag를 출력하는 코드를 파이썬으로 짜보겠습니다. text = bytearray(34) text[6:10] = "2017" tex..
2018 HackingCamp CTF의 EZ라는 문제입니다. 매우 쉽다네요 ㅎㅎ C#으로 만들어진 8x8 타일들이 있는 프로그램입니다. 누르지 않으면 흰색, 누르면 검은색으로 바뀌는 타일들입니다. reflector로 열어서 분석해보겠습니다. Clicked 함수를 보니 '1110011110100101111001111000010001000111101001011110011110100100' 일 때 성공 문자열을 복호화한 후 출력한다고 합니다. 이 숫자를 8x8로 맞추고 1은 검은색 0은 하얀색으로 맞춰주면 저런 그림이 나옵니다. EZ 프로그램에 있는 타일을 저렇게 맞춰주면.. 플래그가 출력됩니다!
Reversing.kr의 문제 HateIntel입니다. Intel을 미워한다네요.. ㅎㅎ 문제 파일을 다운로드 받아보면 HateIntel 파일과 ReadMe 파일이 있습니다. ReadMe 파일을 메모장으로 열어보면, 패스워드를 찾으라고 합니다. 먼저 HateIntel 파일을 HxD로 열어보겠습니다. 처음 보는 파일 시그니처길래 찾아보았더니 OS X 실행 파일의 시그니처였습니다. 그렇다면 OS X에서만 실행할 수 있다는 이야기군요.. 하지만 저에게는 IDA가 있죠! IDA로 HateIntel 파일을 분석해보겠습니다. main 함수 부분입니다. sub_232C 함수 부분입니다. sub_2494 함수 부분입니다. 핵심 함수는 위 3개이고 처음에 입력을 받고 암호화하는 과정을 역연산해서 byte_3004[i] ..
Reversing.kr의 문제 Position입니다. 문제 파일을 다운로드 받아보면 Position.exe와 ReadMe.txt 파일이 있습니다. ReadMe.txt 파일을 열어보면, Serial이 76876-77776 일 때에 패스워드를 찾으라네요. 그리고 패스워드는 4글자이고, p로 끝난답니다. Position.exe를 실행시켜보겠습니다. Name을 입력받는 부분과 Serial을 입력받는 부분이 있습니다. 그리고 그 밑에 성공인지 실패인지 알려주네요. 이제 IDA로 분석을 해보겠습니다. sub_401740 함수의 리턴값이 1일 때 성공 문자열을 출력하네요. sub_401740 함수를 분석해보겠습니다. Name의 길이가 4글자여야 하고 소문자 알파벳으로 이루어져 있어야 하네요. Name에 중복문자가 있..
※ 이 글은 psyoblade님의 글을 퍼온 것입니다. 출처 : http://psyoblade.egloos.com/2653919 참고서적 : 유닉스 리눅스 프로그래밍 필수 유틸리티 : vi, make, gcc, gdb, cvs, rpm 1. 우선 컴파일 시에 디버깅 정보를 담아야 한다. gcc -g -o [프로그램명] [소스파일명] 디버깅 옵션인 -g 으로 컴파일하며, 최적화 옵션인 -O 은 주지 않도록 한다. 2. 실행방법 gdb [프로그램명] gdb [프로그램명] [core파일명] gdb [프로그램명] [실행중인프로세스pid] 3. 종료방법 q Ctrl + d 4. 소스 찾아가기 (list) l : main 함수를 기점으로 소스의 내용이 출력된다 l 10 : 10 행 주변의 소스가 출력되는데 10 -..
Reversing.kr의 문제 AutoHotkey1입니다. 문제 파일을 다운로드 받아보면 readme.txt와 ahk.exe가 있습니다. readme.txt를 열어보면, 정답을 인증하는 형식에 관해서 설명을 해주고 있습니다. md5 복호화를 해서 문자열을 만드는 것 같네요. ahk.exe를 실행시켜보면, 입력하는 칸이 있는데 아무 숫자나 입력을 하고 OK를 눌러보니 바로 프로그램이 종료됩니다. PEID로 파일의 정보를 확인해보겠습니다. UPX 패킹이 되어있네요. 언패킹을 해주고 실행시켜보면.. "EXE corrupted"라는 문자열이 출력되고 확인 버튼을 누르면 종료됩니다. 검색을 해보니 컴파일 후 변조가 되면 이 문자열을 띄운다고 합니다. 이제 언패킹을 하지 않은 원본 파일을 올리디버거로 분석해보겠습니..
Reversing.kr의 문제 Direct3D FPS입니다. 문제 파일을 실행시켜보면, 고구마 몬스터들을 총으로 쏴 죽이는 게임입니다. 올리디버거로 분석해보겠습니다. "Game Clear"라는 문자열이 있는 곳으로 가보니 이상한 문자열이 있네요. 고구마 몬스터를 조금 잡아보니, 문자열이 조금 달라졌습니다. 아마 필드 안에 있는 모든 고구마 몬스터들을 잡으면 이상한 문자열이 성공 문자열로 바뀌는 것 같네요. 문자열을 복호화해주는 부분을 찾기 위해서 이상한 문자열에 하드웨어 BP를 걸고 고구마 몬스터를 조금 잡아보았습니다. 위가 바로 복호화를 해주는 부분입니다. 하지만 이상한 문자열과 XOR 연산을 하는 CL의 값을 알 수가 없기 때문에, 0103427에서 CL이 값을 받아오는 메모리 주소에 하드웨어 BP를..
Reversing.kr의 문제 Ransomware입니다. 문제 파일을 다운로드 받아보면, run.exe, readme.txt, file이라는 이름의 파일들이 있습니다. readme.txt 파일을 열어보니.. "복호화 한 file은 EXE 형식의 파일이다."라고 써있는 것 같습니다. run.exe를 실행시켜보겠습니다. 어떤 나쁜 사람이 파일을 암호화했다네요. 먼저 PEID로 run.exe 파일의 정보를 보겠습니다. UPX로 패킹이 되어있네요. 올리디버거로 열어서 직접 진짜 코드가 있는 곳으로 가서 분석해보겠습니다. 윗부분은 반복문을 돌며 암호화된 파일을 읽어오는 부분입니다. 윗부분은 입력 받은 key값을 이용해서 암호화된 파일을 복호화하는 부분입니다. 복호화하는 방식을 정리하면 파일에서 한 바이트씩 가져와..
1. 안티디버깅(Anti-Debugging)이란? 안티 디버깅(Anti-Debugging)이란 말 그대로 디버깅을 방해해서 분석을 어렵게 하는 기술입니다. 안티 디버깅을 적용한 프로그램이 실행 중에 있을 때 디버깅을 당한다면 디버깅을 하지 못하도록 고의적으로 에러를 발생시키거나 디버거 프로그램을 종료시키는 등 여러가지 방법들을 사용해서 분석을 하지 못하도록 방해합니다. 디버깅(Debugging)이란? 디버깅이란 프로그램의 오류를 찾아내는 과정을 말합니다. 2. 안티 디버깅의 종류 CheckRemoteDebuggerPresent() Windows APIDetecting Breakpoints by CRCDetecting SoftlCE by Opening Its DriversUnhandledExceptionF..
Reversing.kr의 문제 CSHOP입니다. 문제 파일을 실행시켜보겠습니다. 회색 창만 나타나고 아무 일도 일어나지 않습니다. PEID로 파일의 정보를 보겠습니다. C#으로 만들어진 프로그램이군요. .net 디컴파일러인 dnSpy로 파일을 분석하겠습니다. dnSpy로 CSHOP 파일을 연 모습입니다. 분석하던 중에 \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD_Click 메소드에 이상한 문자열이 담겨있는 것을 발견했습니다. 저 문자열이 정답인 줄 알았으나 역시 아니였습니다.. 그리고 바로 다음에 사이즈가 0, 0인 버튼을 클릭하면 \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD_Click 메소드가 실행되는 부분을 발견했습..
- Total
- Today
- Yesterday
- 멘토링
- CodeEngn
- Advance RCE
- 유니티
- unity2d
- Level 06
- Unity
- 17th HackingCamp CTF
- pwnable
- Level 04
- Basic RCE
- Level 03
- Level 02
- xcz.kr
- Android
- 안드로이드 멘토링
- Level 05
- Level 01
- wargame
- Reversing
- Write-up
- c++
- C#
- HackingCamp
- hackerschool
- ftz
- 안드로이드
- 풀이
- reversing.kr
- Programming
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |