System/CTF
-
CTFd 설치법System/CTF 2019. 11. 29. 16:01
환경은 Ubuntu 16.04에서 진행하였다. 패키지 설치 1. git 설치 sudo apt-get install git 2. python3 && pip3 설치 sudo apt-get install python3 python3-pip 3. CTFd git 다운로드 git clone https://github.com/CTFd/CTFd.git 4. CTFd 모듈 설치 sudo pip3 install -r requirements.txt 여기까지 진행했으면 CTFd 설치는 끝났다. 이제 스크립트를 상황에 맞게 수정 해주면 된다. serve.py 수정 vi serve.py #!/usr/bin/python3 # 파일 실행 환경변수 설정 from CTFd import create_app import argparse ..
-
[2019picoCTF] droids4System/CTF 2019. 10. 13. 00:09
picoCTF의 droids 시리즈 중 마지막 문제인 droids4다. 화면 구성은 다음과 같다. 마지막 문제도 이전 문제들과 같이 사용자의 입력을 받고, 입력 값에 대한 결과 값을 출력해주는 어플이다. 어플에서 입력한 값은 getFlag( )의 첫번째 인자로 넘어가는데, equals( )로 검증이 이루어지고 있다. 빨간 박스에서 어떠한 값이 만들어지는데, 우리의 입력 값이 해당 값과 같아야 한다. 주황 박스는 Flag값을 생성하는 메소드인데, 전 문제처럼 어떠한 조건에서도 실행되지 않는다. droids3문제 처럼 바로 cardamom( )을 호출하는 방법을 생각해볼 수 있는데, 바로 메소드를 호출하게 되면 Crash가 발생하면서 어플이 종료된다. 따라서, 해당 문제에서는 cardamom( )의 인자로 ..
-
[2019picoCTF] droids3System/CTF 2019. 10. 12. 23:27
picoCTF droids 시리즈 중 4번째 문제다. 화면 구성은 다음과 같다. 이번에도 사용자의 입력을 받고, 버튼을 누르면 입력 값 처리 후 결과 값을 "i'm a flag!"위치에 출력해준다. 우리가 입력한 값은 getFlag( )의 첫 번째 인자로 넘어가는데, 입력된 값에 상관없이 nope( )가 실행된다. 빨간박스 nope( )는 단순히 "don't wanna"문자열을 반환하는 메소드이기 때문에 어떠한 값을 입력해도 결과는 똑같다. 주황박스 yep( )은 이전 문제들에서 Flag값을 얻어올 때와 같은 행동을 하고 있다. 하지만, yep( )는 어떠한 조건에서도 호출되지 않기 때문에 일반적인 방법으로는 yep( )의 실행값을 확인할 수 없다. 이때 사용할 수 있는 방법이 Frida를 이용한 후킹이..
-
[2019picoCTF] droids2System/CTF 2019. 10. 12. 23:04
picoCTF의 droids 시리즈 중 3번째 문제다. 어플 화면 구성은 다음과 같다. 전 문제들과 똑같이 사용자의 입력을 받고 내부에서 처리하며, 처리된 결과를 출력해주는 어플이다. 조금 귀찮은 문제다.. String[] v0 = {"weatherwax", "ogg", "garlick", "nitt", "aching", "dismass"} 위와 같은 Array변수에서 concat( )으로 각 인덱스를 이어붙인 문자열과 입력값이 같으면 Flag값을 출력해주는 로직이다. 소스대로 문자열들을 이어붙이면 "dismass.ogg.weatherwax.aching.nitt.garlick" 해당 문자열이 완성된다. adb shell input text "dismass.ogg.weatherwax.aching.nitt...
-
[2019picoCTF] droids1System/CTF 2019. 10. 12. 22:47
droids시리즈 두 번째 문제다. 어플의 화면 구성은 다음과 같다. 사용자의 입력을 받고 버튼을 누르면 입력된 값이 어플 내부에서 처리된다. 처리된 결과값이 "i'm a flag"위치에 출력된다. 입력 값은 getFlag( )의 첫 번째 인자로 넘어가며, 입력값이 arg3.getString(0x7F0B002F)과 같으면 Flag값을 반환해준다. 어플에서 참조하는 리소스에 대한 정보는 res/values/public.xml에 존재한다. 0x7F0B002F ID값을 가진 리소스는 String타입의 password이다. String에 대한 리소스들은 res/values/strings.xml에 존재한다. password(0x7F0B002F)의 값은 "opossum"인 것을 확인할 수 있다. 해당 값을 텍스트 ..
-
[2019picoCTF] droids0System/CTF 2019. 10. 12. 22:28
이번에 진행된 picoCTF에서 안드로이드(.apk) 문제가 있어서 한번 풀어봤다. 뉴비들 상대로 진행된 CTF이기 때문에 난이도는 쉬운 편에 속한다. 우선 어플을 실행하면 입력박스/버튼/텍스트뷰 3가지로 구성된 화면을 볼 수 있다. 우리가 입력한 값이 어플 내부에서 검증된 값이면 "I'm a flag!"위치에 Flag값이 출력되는 구조이다. JEB로 어플의 MainActivity를 보면, 주황박스에서는 버튼을 눌렀을 때의 처리를 하고 빨간박스에서는 hellojni.so를 로드하는 모습을 볼 수 있다. 우선 버튼을 눌렀을 때의 동작을 살펴보자 getFlag( )의 첫 번째 인자에는 우리가 텍스트박스에 입력한 값이, 두 번째 인자에는 어플의 Context값이 넘어간다. 우리가 입력한 값(arg2)를 pap..
-
[64bit] FSB Exploit GeneratorSystem/CTF 2019. 7. 10. 19:44
한동안 64Bit FSB를 못 풀었었는데 Jsec님이 정리해주신 글을 보고 64Bit FSB Exploit Generator 툴을 만들어 봤다. 32Bit같은 경우는 PwnTool 모듈에 있는데왜인지는 모르겠지만 64Bit는 따로 없는 것 같았다.( context.arch를 amd64로 설정하거나, 옵션을 건드리면 되는 것 같긴한데 익스가 안되더라.. 쓰기도 어렵고.. ) 그래서 다음에 64Bit FSB문제를 만나면 써먹으려고 간단한 Generator를 만들었다.https://github.com/Py0zz1/x64_FSBSolver[ Download ]git clone https://github.com/Py0zz1/x64_FSBSolver.gitcd ./x64_FSBSolvercp ./x64fsb [Yo..
-
Meepwn 2018 White snow, Black shadow WriteupSystem/CTF 2019. 3. 2. 22:06
2018년 7월 Meepwn CTF에서 Forensic으로 출제된 문제다. [ 문제 ]파일이 하나 주어지고, 압축을 풀면 아래와 같은 이미지 파일을 볼 수 있다. [ evidence.jpg ]오.. 명탐정 코난 뭔가 대게 이런 이미지 파일 문제들은 매직넘버로 장난친 경우가 많다. [ binwalk ]binwalk로 확인해보면, 그림파일 안에 JPEG말고 ZIP도 존재하는 것을 확인할 수 있다. 그림 파일의 확장자는 .JPG로 Header는 'FF D8 FF E0' Footer는 'FF D9'로 구성되어 있다. 그림파일의 데이터는 Footer(FF D9)까지만 유효하기 때문에, 그 뒤는 어떤 데이터가 있더라도그림파일에는 영향이 없다. 따라서, HxD같은 바이너리편집기로 Footer시그니처를 찾아보면뒷 쪽에..