Pwnable
[Dreamhack] tcache_dup - write up
Index문제보호기법 확인tcache_dup.c문제풀이익스플로잇 tcache_dupDescription 이 문제는 작동하고 있는 서비스(tcache_dup)의 바이너리와 소스코드가 주어집니다. Tcache dup 공격 기법을 이용한 익스플로잇을 작성하여 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다. Environment Ubuntu 18.04 Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000) Reference Tcache duphttps://dreamhac..
[Dreamhack] Tcache Poisoning - write up
Index문제 환경문제보호기법 확인tcache_poison.c문제 풀이Libc LeakExploit익스플로잇 코드 Tcache PoisoningDescription Exploit Tech: Tcache Poisoning에서 실습하는 문제입니다.https://dreamhack.io/wargame/challenges/358/ 문제 환경Ubuntu 18.04 / glibc 2.27💡glibc 버전을 2.27로 맞춰줘야 한다. 2.31은 해당 취약점이 패치되었다. 문제보호기법 확인tcache_poison.c// Name: tcache_poison.c // Compile: gcc -o tcache_poison tcache_poison.c -no-pie -Wl,-z,relro,-z,now #include #incl..
Heap 메모리 구조2 - bins
Indexbinsfast binunsorted binsmall binlarge binlast_remaindertcache bin 💡해당 글에서는 tcachebin를 제외한 fastbin, unsortedbin, smallbin, largebin에 대해서 설명하므로, glibc-2.23 버전을 기준으로 한다. binsBin이라는 구조를 이용하여 해제된 청크를 크기 단위로 관리한다. 이는 메모리 할당 요청시 이전에 사용했던 크기의 chunk가 있다면 신속하게 재할당하기 위함이다. 크기에 따라 4가지 유형으로 나뉜다(glibc-2.26 이후 tcachebins가 추가되어 5가지의 bins). 크기가 클 수록 할당/해제가 느려지고, 크기가 작을 수록 할당/해제가 빠른 bins를 사용한다. fast bin이름 그..
Heap 메모리 구조1 - Chunk 필드와 종류
Index메모리 구조Heap 영역 할당chunk 필드prev_sizesizedatachunk 종류Allocated chunkFreed chunkTop chunk정리 메모리 구조메모리 구조 중에서 heap을 관리하는 구조와 규칙에 대해서 알아보려고 한다.heap은 프로그램이 실행되고 동적으로 메모리를 할당하고 해제하는 영역이다. C언어에서는 malloc 함수를 사용하여 메모리를 할당하고, free 함수를 사용하여 할당된 공간을 해제한다.Heap 영역 할당malloc 함수 호출 전 malloc 함수 호출 후heap 공간이 메모리에 할당된 것을 확인할 수 있다. 프로그램이 시작하면서 만들어 진 것이 아닌, 실행 도중 생겨난 영역으로 동적할당이 된 것이다. chunk 필드malloc_chunk의 구조는 다음과 ..
[Dreamhack] uaf_overwrite - write up
Index문제보호기법 확인uaf_overwrite.c코드 분석전역 변수 선언human_func()robot_func()custom_func()문제 풀이Libc LeakLocal Exploit Issue 익스플로잇 uaf_overwriteDescription Exploit Tech: Use After Free에서 실습하는 문제입니다.https://dreamhack.io/wargame/challenges/357/ 문제보호기법 확인모든 보호 기법이 걸려있다. uaf_overwrite.c// Name: uaf_overwrite.c // Compile: gcc -o uaf_overwrite uaf_overwrite.c #include #include #include #include struct Human { ch..
[Dreamhack] ssp_001 - write up
Index문제보호기법 확인ssp_001.c문제 풀이익스플로잇 ssp_001Description 이 문제는 작동하고 있는 서비스(ssp_001)의 바이너리와 소스코드가 주어집니다. 프로그램의 취약점을 찾고 SSP 방어 기법을 우회하여 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다.https://dreamhack.io/wargame/challenges/33/ 문제보호기법 확인NX와 Stack Canary가 적용되어 있다. ssp_001.c#include #include #include #include void alarm_handler() { puts("TIME OUT"); ex..
[Dreamhack] basic_exploitation_003 - write up
Index문제보호기법 확인basic_exploitation_003.c문제 풀이익스플로잇 basic_exploitation_003Description 이 문제는 서버에서 작동하고 있는 서비스(basicexploitation003)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다.https://dreamhack.io/wargame/challenges/5/ 문제보호기법 확인NX bit가 켜져있고, Partial RELRO이므로 GOT overwrite가 가능하다. basic_exploitation_003.c#includ..
[Dreamhack] basic_exploitation_002 - write up
Index문제보호기법 확인basic_exploitation_002.c문제 풀이익스플로잇 basic_exploitation_002Description 이 문제는 서버에서 작동하고 있는 서비스(basicexploitation002)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다.https://dreamhack.io/wargame/challenges/4/문제보호기법 확인NX bit가 켜져있고, Partial RELRO이므로 GOT overwrite가 가능하다. basic_exploitation_002.c#include..