분류 전체보기
-
two targets Write-upSystem/Pwnable.xyz 2020. 1. 20. 01:19
이번 문제는 풀이법이 2개가 있다. 하나는 암호화 루틴을 분석하는 것, 다른 하나는 GOT Overwrite로 원샷함수를 실행하는 것이다. 이번 풀이법에서는 두 가지 모두 다뤄보도록 하겠다. Binary 가장 기본적인 보호기법으로 설정되어 있다. Partial RELRO이기 때문에 .got섹션에 쓰기권한이 부여되어 있다. Solve_1 ( 역연산 ) 바이너리를 실행하면 총 4개의 메뉴는 제공한다. 그 중 'Get shell'이라는 4번 메뉴가 가장 눈에 띈다. IDA로 확인해보면 위와 같이 구성되어 있다. 우선 auth( )라는 함수가 실행되고, auth( )의 반환값이 1(true)이면 win( )함수가 실행되면서 Flag를 얻을 수 있다. auth( )는 우리가 입력한 값에 대해서 특정 연산을 진행하..
-
note Write-upSystem/Pwnable.xyz 2020. 1. 19. 04:17
이번 문제는 note류 문제다. 보통 ~~note와 같은 네이밍을 가진 문제들은 menu를 제공하고 각 메뉴 기능을 통해 Exploit을 진행한다. Binary 보호기법에서 특이사항은 No RELRO라는 점이다. RELRO는 Relocation Read-Only의 약자로 Symbol정보나 .got의 적용되는 보호기법을 말한다. No RELRO의 경우 ELF Header, Code영역을 제외한 영역에 쓰기권한이 부여된 상태이다. Problem 바이너리를 실행하면 'Edit note', 'Edit desc' 두 개의 메뉴를 제공한다. 먼저 Edit_note( )에서는 원하는 크기만큼 동적할당 후 값을 입력받는다. 입력받은 값은 전역변수 s에 저장하고, free( )로 할당한 공간을 해제해준다. Edit_de..
-
misalignment Write-upSystem/Pwnable.xyz 2020. 1. 19. 03:40
이전 문제에 sub,add 두 문제의 연장선같은 문제다. sub,add,misalignment 세 문제 모두 단순 Arbitrary Write문제다. Binary 64bit ELF 바이너리이며, Shared Object로 PIE가 걸려있음을 알 수 있다. Full Mitigation이 적용되어 있지만 쫄지말자 출제자가 의도된 풀이로 인도하기 위한 장치라고 생각하면 된다. win( )로 원샷 함수가 있기 때문에 간단한 익스가 가능하다. Problem 먼저 빨간박스에서 Arbitrary Write가 가능하다. v6,v7,v8 모두 scanf( )를 통해서 입력받고 있으며, v8값으로 저장주소의 인덱스 참조를 조정할 수 있다. 그리고 win( ) 실행 조건은 *(v5+7)위치에 0xB0000000B5가 저장되..
-
JEB2 App 동적 디버깅Mobile/Android 2019. 12. 23. 00:07
모바일 분석계의 IDA같은 존재 'JEB2'를 이용한 동적 디버깅에 대해 기술 해보려고 한다. 우선 JEB2는 Bytecode(Smali)를 분석하기 편하게 Java로 디컴파일 해주는 기능을 제공한다. IDA의 Hexray와 같은 기능인데, 덕분에 APK를 동적으로 분석할 때 많은 도움이 된다. 이번 글에서는 Uncrackable1을 디버깅 해보면서 App내부에 저장된 Secret Code를 알아내보도록 하겠다. JEB2 먼저 분석할 App을 JEB에 로드해주면 위와 같이 App의 Bytecode를 확인할 수 있다. App의 코드를 확인하고 원하는 분석 지점으로 이동해서 Breakpoint를 설정해줘야 한다. Breakpoint설정은 Bytecode View에서 원하는 지점을 클릭한 뒤, Ctrl+B로 ..
-
xor Write-UpSystem/Pwnable.xyz 2019. 12. 22. 02:32
pwnable.xyz의 xor 문제를 풀어봤다. 배점이 50점이라 난이도가 높지는 않고, 단순 Overflow Exploit이 아니라서 괜찮은 문제같다. Binary 먼저 64Bit 바이너리이고, Shared Object로 PIE가 걸려있음을 알 수있다. 보호기법은 Stack Canary를 제외하고 모두 적용되어 있다. Full RELRO이기 때문에 GOT Overwrite가 불가능하고, NX Bit가 적용되어 있기 때문에 실행권한이 없는 상태이다. 그리고 win( )로 Flag를 출력해주는 Oneshot함수가 존재한다. 또한, 바이너리 코드영역에 rwx권한이 부여되어 있다. 바이너리 특이사항은 이정도로 잡으면 될 것 같고, Exploit Point는 win( )와 코드영역 rwx권한으로 잡으면 된다. ..
-
FRIDA Hooking (OWASP - UnCrackable2)Mobile/Frida 2019. 12. 22. 01:30
OWASP-mstg : https://github.com/OWASP/owasp-mstg/tree/master/Crackmes OWASP Mobile Crack 트레이닝 중 Level2 문제풀이이다. 문제풀이는 FRIDA를 이용할 것이며, Level1 문제풀이는 여기에서 확인할 수 있다. UnCrackable2_exit( ) Hook adb install을 통해 App을 디바이스에 설치해주고 실행 시켜보도록 하자 루팅된 디바이스일 경우, 위와 같이 "Root Detected!" 경고창이 팝업되면서 [OK]를 누르면 App이 종료된다. 따라서, App이 종료되는 루틴을 먼저 확인하고 루팅된 디바이스에서도 App을 사용할 수 있게끔 해줘야 한다. MainActivity를 보면, b.a( ) / b.b( ) /..
-
IDA를 이용한 Android App Library 동적 디버깅Mobile/Android 2019. 12. 20. 02:43
정적 분석에서 자주 사용했던 IDA로 App의 Native와 JVM단에서의 동적 디버깅을 할 수 있다. JVM디버깅은 JEB가 Bytecode를 Hexray해줘서 보기 더 편하긴 하지만, JEB가 없다면 유용하게 사용할 수 있다. 일단 프로세스의 메모리를 읽고 쓸수 있어야 하기 때문에 root권한이 필요하다. 그리고 App이 Android Manifest.xml 파일을 수정해줘야 하므로 리패키징 과정이 필요하다. Android Manifest.xml 수정 모든 어플들은 android:debuggable 옵션이 False로 설정되어서 릴리즈된다. 만약 해당 옵션이 설정되어 있지 않으면 기본으로 False로 설정된다. debuggable옵션이 활성화되어 있으면 플레이 스토어와 같은 마켓에 App을 업로드할 ..
-
Fridump (메모리 덤프)Mobile/Frida 2019. 12. 19. 04:38
Frida를 이용한 메모리덤프를 소개 하고자 한다. 'Fridump'라는 툴인데, 프로세스의 모든 메모리영역을 Dump해서 파일로 저장해주는 툴이다. 메모리를 통째로 가져와서 분석해야할 때 유용하게 사용할 수 있다. 예를 들어, 암호화된 모듈,데이터가 Runtime 중 복호화되어 메모리에 로드되는 시점이 있을 것이다. 이 때 Fridump를 이용해서 메모리를 통째로 가져오면 복호화된 데이터를 얻을 수 있을 것이다. Fridump Fridump는 https://github.com/Nightbringer21/fridump 여기에서 다운받을 수 있다. 그리고 당연히 Frida API를 사용하기 때문에 pip install frida로 모듈을 설치해줘야 한다. Known App은 위처럼 Safari로 줘도 되지..