Reversing.kr의 문제 Flash Encrypt입니다. 문제 파일을 다운로드 받겠습니다. swf 파일이네요. SWF란, 어도비 플래시에서 멀티미디어, 액션 스크립트, 벡터 그래픽 등을 처리하는 곳에 사용되는 파일 형식입니다. 플래시 뷰어로 파일을 열어보겠습니다. 회색 배경에 숫자를 입력하는 창밖에 보이지 않습니다. 이제 swf 파일의 디컴파일러인 JPEXS로 열어서 분석하겠습니다. 분석하던 중에 BUTTONCONACTION 파일에서 공통적으로 전역 함수 gotoAndPlay와 서로 다른 조건식이 있다는 것을 확인했습니다. 그래서 각 입력란에 조건식에 맞는 값을 넣어주었더니.. Key 값이 출력되었습니다.
안드로이드 APK 디컴파일이란? 먼저 디컴파일(Decompile)이란 역컴파일이란 말로써 컴파일의 반대 개념입니다. 안드로이드 APK 파일은 JAVA 기반으로 이루어져 있기 때문에 컴파일 후 코드의 실행 구조를 디컴파일 할 수 있습니다. apk 파일 디컴파일을 할 때 사용되는 프로그램들은 다양하지만 저는 그중에서 제가 가장 좋다고 느끼는 JADX 툴로 설명을 하겠습니다. JADX : https://github.com/skylot/jadx/releases 위 링크에서 JADX를 다운로드 받을 수 있습니다. ※ jadx는 jdk 1.7.0_80 버전이 설치 되어있어야만 실행할 수 있습니다. 1. 디컴파일 할 APK 파일을 다운로드 받는다. 2. jadx-gui.bat을 이용해서 apk 파일의 자바 코드를 분..
Reversing.kr의 문제 Easy ELF입니다. 리눅스 환경에서 문제 파일을 실행시켜보면.. 입력하는 칸이 나와서 아무 숫자나 입력했는데 실패 문자열이 출력되네요. 문제 파일을 IDA로 분석해보겠습니다. 문자열을 출력하고 두 함수를 거친 뒤 eax의 값이 1이면 80484F7 함수를 호출한 뒤 프로그램이 종료됩니다. 그런데 만약 eax의 값이 1이 아니라면 실패 문자열이 출력되고 종료됩니다. 80484F7 함수를 확인해보겠습니다. 성공 문자열을 출력하는 함수네요. 그렇다면 위 두 함수를 지난 뒤 eax가 1이 되는 값을 구하면 되겠군요. 먼저 8048434 함수를 보겠습니다. scanf 함수를 호출해서 804A020부터 문자를 저장시킨다는 것 같습니다. 이제 8048451 함수를 보겠습니다. 코드의..
Reversing.kr의 문제 ImagePrc입니다. 문제 파일을 실행시켜보겠습니다. 그림을 그리는 창이 나와서 아무 그림이나 그리고 체크를 눌렀더니 실패 문자열이 출력되네요. 패킹은 되어있지 않으니 바로 올리디버거로 분석하겠습니다. 위 화면의 코드들을 살펴보면 높이가 150, 너비가 200인 bmp 리소스를 받아오는 것을 볼 수 있습니다. 문자열들을 살펴보던 중에 아까 봤던 실패 문자열을 발견해서 그곳에 BP를 걸고 실행시켜보았습니다. 실패 문자열이 출력되는 곳 바로 위에 조건 점프문을 보니 특정 루틴을 0x15F90번 반복하면서 비교하는 것을 볼 수 있습니다. 아마 문제 파일 안에 있는 그림과 사용자가 만든 그림을 비교하는 것 같습니다. 이제 PE view로 문제 파일의 PE 구조를 확인하여 파일 안..
Reversing.kr의 문제 Replace입니다. 문제 파일을 실행시켜보겠습니다. 숫자만 입력받을 수 있습니다. 아무 숫자나 입력해보니 문제가 발생해서 프로그램 작동이 중지됩니다. 패킹은 되어있지 않으니 바로 올리디버거로 분석하겠습니다. 올리디버거로 실행시킨 후 아무 숫자나 넣고 체크 한 후 0040466F 주소를 보면 EAX에 0x90(NOP)을 저장하는데 이 부분에서 문제가 발생합니다. 왜냐하면 현재 EAX에 저장돼있는 주소인 60160A20은 접근할 수 없는 주소이기 때문입니다. 접근을 할 수 없는 곳에 0x90이란 값을 넣으려고 하니 오류가 발생하는 것입니다. 이제 프로그램에서 숫자를 입력받고 처리하는 부분을 보겠습니다. 숫자를 입력받는 함수인 GetDlgItemInt에 BP를 걸어주고 실행시켜..
Reversing.kr의 문제 Music Player입니다. 문제 파일을 다운로드 받아보면.. 실행 파일과 텍스트 파일 그리고 msvbvm60.dll 파일이 있습니다. msvbvm60.dll은 비주얼 베이직 6.0의 라이브러리 파일입니다. (실행 파일이 비주얼 베이직으로 만들어진 것이라서 혹시라도 사람들이 msvbvm60.dll이 없을까 봐 친절하게 문제와 함께 첨부해주셨네요 ㅎㅎ) 텍스트 파일을 열어보면.. 이 MP3 플레이어에는 1분마다 체크를 하는 루틴이 있어서 1분까지밖에 들을 수 없고 1분 이상을 들으면 플래그가 나온다고 하네요. 프로그램을 실행시켜보겠습니다. 노래를 틀면 딱 1분이 될 때 1분 미리듣기만 가능하다는 창이 뜨면서 프로그램이 종료됩니다. 패킹은 되어있지 않으니 바로 올리디버거로 열..
Reversing.kr의 문제 Easy Unpack입니다. 파일을 다운로드 받아보면.. 'Easy_UnpackMe.zip'이란 파일입니다. 압축을 풀면.. 실행 파일과 텍스트 파일이 하나씩 있습니다. 텍스트 파일을 열어보면 OEP를 찾으라네요. OEP(Original Entry Point)란, 이름 그대로 프로그램의 진짜 시작 위치를 나타내는 말입니다. 실행 파일을 실행시켜보면 이런 창이 뜹니다. 먼저 PEID로 실행 파일의 정보를 보겠습니다. 무엇으로 패킹 되었는지 알 수가 없다네요. 올리디버거로 열어서 분석하겠습니다. 밑으로 내리다 보니 점프문을 찾을 수 있었습니다. OEP로 가는 점프문으로 보입니다. 저곳에 BP를 걸고 00401150으로 이동하겠습니다. 이상한 문자들만 보이네요. 단축키 Ctrl ..
Reversing.kr의 문제 Easy Keygen입니다. 파일을 다운로드 받아보면.. 'Easy_KeygenMe.zip'라는 이름의 파일입니다. 압축을 풀면.. 실행 파일과 텍스트 파일이 하나씩 있는데요. 텍스트 파일을 열어보면.. Serial이 5B134977135E7D13일 때, Name값을 구하라고 하네요. 이제 실행 파일을 열어보겠습니다. (그냥 실행했을 때는 실패 문자열이 출력되지 않고 올리디버거로 열고 실행시켰을 때만 실패 문자열이 나타나네요) 아무값이나 넣고 엔터를 눌렀더니 실패 문자열이 출력됩니다. 먼저 PEID로 파일의 정보를 보겠습니다. C++로 짜여진 프로그램이고 패킹은 되어있지 않습니다. 이제 올리디버거로 열어서 분석해보겠습니다. 분석하던 중에 Serial을 생성하는 루틴을 찾았습..
Reversing.kr의 문제 Easy Crack입니다. 파일을 다운로드 받아보면.. 'Easy_CrackMe.exe'라는 이름의 파일입니다. 실행시켜보겠습니다. 1234를 입력하고 확인을 눌렀더니 실패 문자열이 출력되었습니다. 먼저 PEID로 파일의 정보를 보겠습니다. C++로 짜여진 프로그램이고 패킹은 되어있지 않습니다. 올리디버거로 열어서 분석해보겠습니다. 문자열들을 보던 중에 성공 문자열을 찾았습니다. 성공 문자열이 위치한 곳으로 이동하겠습니다. 성공 문자열 위에서 첫 번째 패스워드 비교문을 찾았습니다. 사용자가 입력한 패스워드의 두 번째 문자와 a를 비교하고 일치하지 않는다면 실패 문자열이 출력되는 곳으로 점프하는 조건문입니다. 그러니 패스워드의 두 번째 문자는 a입니다. -> ~a~~~ 계속 ..
CodeEngn Basic RCE의 마지막인 20번 문제입니다. CodeEngn이라는 문자열이 출력되려면 crackme3.key 파일 안의 데이터가 무엇이 되어야 하는지를 묻는 문제입니다. 먼저 프로그램을 다운로드 받겠습니다. '20.exe'라는 이름의 파일입니다. 실행시켜보면.. 이런창이 뜨고 아무 일도 일어나지 않습니다. 먼저 PEID로 파일의 정보를 보겠습니다. 패킹은 되어있지 않네요. 이제 올리디버거로 열어서 분석해보겠습니다. 'CRACKME3.KEY'라는 이름의 파일이 필요하고 이 파일의 크기는 18바이트여야 합니다. 계속 밑으로 내려가며 보겠습니다. 첫 번째 사진의 내용은 CRACKME3.KEY 파일 안에 있는 문자열을 한 자리씩 순서대로 A-O까지 XOR 연산을 합니다. 우리는 XOR 연산을..
CodeEngn Basic RCE의 19번 문제입니다. 해당 프로그램이 몇 밀리세컨드 후에 종료되는지를 물어보는 문제입니다. 먼저 프로그램을 다운로드 받겠습니다. '19.exe'라는 이름의 파일입니다. 실행시켜보면.. 메시지창이 뜨고 약 12초 정도 후에 종료됩니다. 먼저 PEID로 파일의 정보를 보겠습니다. UPX로 패킹 되어있네요. 빠르게 UPX툴로 언패킹 하겠습니다. 이제 올리디버거로 열어서 보겠습니다. 프로그램에서 사용되는 함수들을 살펴보던 중에 timeGetTime 함수들이 나와서 BP를 걸어주었습니다. timeGetTime 함수란? 윈도우가 시작되고 난 뒤 지난 시간을 데이터로 얻는 함수입니다. 그리고 한 줄씩 실행시키다 보면.. DWORD PTR DS : [EBX+0x4]에 있는 값인 2B7..
CodeEngn Basic RCE의 18번 문제입니다. Name에 CodeEngn을 입력했을 때의 Serial을 구하는 문제입니다. 먼저 프로그램을 다운로드 받아보겠습니다. '18.exe'라는 이름의 파일입니다. 실행시켜보고 틀린 Serial값을 입력해보겠습니다. 실패 문자열이 출력됩니다. 올리디버거로 보기 전에 먼저 PEID로 파일의 정보를 보겠습니다. 언패킹은 되어있지 않습니다. 이제 올리디버거로 열어서 보겠습니다. 성공 문자열이 보이네요. 성공 문자열이 위치한 곳으로 가보겠습니다. 성공 문자열 위에 문자열을 비교하는 함수인 strcmp가 보입니다. 저곳에 BP를 걸고 실행시켜보겠습니다. Name값에는 CodeEngn을 Serial값에는 1234를 입력했습니다. 그리고 체크를 눌러주면.. String..
CodeEngn Basic RCE의 17번 문제입니다. 해당 프로그램의 key값을 이용해서 Name을 찾는 문제네요. 프로그램을 다운로드 받겠습니다. '17.exe'라는 이름의 파일입니다. 실행시켜보면.. Name이 한자리라길래 한자리만 입력했더니 문자를 더 치라고 하네요. 이 부분부터 고쳐야 될 것 같습니다. 그 전에 먼저 PEID로 파일의 정보를 보겠습니다. 패킹은 되어있지 않습니다. 올리디버거로 열겠습니다. 아까 봤던 문자를 더 입력하라는 문자열을 찾았습니다. 해당 문자열이 사용되는 곳으로 이동해보겠습니다. 입력받은 Name이 세 자리 이상인지 비교하는 조건문이 보입니다. 저곳을 수정해주겠습니다. Name이 한자리일 때도 실행되도록 수정해주었습니다. 이제 이 상태에서 프로그램을 저장하겠습니다. 이제..
학교에서 사이버 가디언즈 컴퍼런스에 참가할 수 있는 기회가 있어서 2017 11월 4일에 다녀왔습니다. 멘토님들의 다양한 강의가 있었는데 전부 흥미롭고 재미있는 내용이라 시간 가는줄 모르고 들었던거 같습니다. 특히 시스템 해킹 개론 시간에는 버그헌팅에 대해서 주로 들었는데 제가 아직 접해보지 못한 분야라 더욱더 흥미를 느끼며 들었습니다. 강의가 모두 끝나고 경품추첨이 있었는데 제가 운 좋게도 문화상품권 10000원에 당첨됐습니다. (교통비 굳었다. 헤헤) 그리고 멘토님들 모두 BOB 출신이고, 강의가 전부 끝나고 마지막에 BOB 홍보가 있어서 그런지 BOB에 들어가고 싶다는 생각이 더 커졌던 시간 이었던 것 같습니다. (게다가 바로 위층에서 BISC...) 재밌고 다양한 강의들도 듣고, 경품도 당첨되고 ..
CodeEngn Basic RCE의 16번 문제입니다. 이 문제도 앞에 문제들과 같이 Name값에 따라 Serial값이 변하는 키젠 문제입니다. 먼저 프로그램을 다운로드 받아보겠습니다. '16.exe'라는 이름의 파일입니다. 실행시켜보면.. 틀린 Serial값을 입력하니 실패 문자열을 출력합니다. 먼저 PEID로 파일의 정보를 확인하겠습니다. C++로 만들어진 프로그램이고 패킹은 되어있지 않습니다. 성공 문자열 위에 EAX값과 EBP-0x3C 주소에 있는 4byte만큼의 값을 비교하고 일치한다면 성공 문자열을, 다르다면 실패 문자열을 출력해주는 조건문이 있습니다. 조건문에 BP를 걸고 실행시켜보겠습니다. 실행시킨 후 Name값에는 CodeEngn을, Serial값에는 1234를 입력해주니.. EAX에 4..
- Total
- Today
- Yesterday
- pwnable
- Programming
- CodeEngn
- 멘토링
- Reversing
- Basic RCE
- c++
- Level 04
- hackerschool
- 안드로이드
- Unity
- wargame
- 안드로이드 멘토링
- Level 01
- HackingCamp
- 17th HackingCamp CTF
- Advance RCE
- unity2d
- C#
- ftz
- Level 06
- Level 03
- 유니티
- xcz.kr
- 풀이
- reversing.kr
- Write-up
- Android
- Level 05
- Level 02
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |