writeup
-
[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..
-
TUCTF2018 lisa WriteupSystem/CTF 2019. 1. 14. 02:37
[ Binary Info ]32Bit 바이너리이며, shared object으로 PIE가 적용되어 있다.PIE와 NX를 제외한 제약사항이 없기 때문에개인적으로 PIE를 처음 접한다면 입문용 문제로 괜찮다고 생각한다. ( 로컬서버에서는 같은 디렉터리에 password와 flag파일을 만들어줘야 합니다. ) 문제의 난이도는 PIE를 제대로 이해한 사람에게는 쉬웠을 것이고나처럼 PIE가 익숙치 않은 사람에게는 어렵게 느껴졌을 것이다.따라서, 무작정 풀다가 어려움을 느끼고 라이트업을 보러오신 분들은 [PIE 보호기법 정리] 를 먼저 보시고다시 한번 풀어보는 것을 추천드리고 싶다! [ Binary 실행 ]바이너리를 실행하면 주소 하나를 릭해준다.그리고 두 번의 입력을 받고 프로그램이 종료된다.대충 이렇게 흐름을 ..