Pwnable
[how2heap] fastbin_dup
https://github.com/shellphish/how2heaptcache가 없는 glibc 2.23 (ubuntu 16.04) 버전으로 실습을 진행했다. fastbin_dup.c#include #include #include int main() { fprintf(stderr, "This file demonstrates a simple double-free attack with fastbins.\n"); fprintf(stderr, "Allocating 3 buffers.\n"); int *a = malloc(8); int *b = malloc(8); int *c = malloc(8); fprintf(stderr, "1st malloc(8): %p\n", a); fprintf(stderr, "2nd..
[how2heap] first_fit
https://github.com/shellphish/how2heaphow2heap을 따라 heap에 대한 공부에 입문하고자 한다.glibc 버전 별로 크로스 컴파일을 해주기 때문에, 원하는 버전을 빠르고 쉽게 분석해볼 수 있다.먼저, github에서 코드를 clone 받고, make를 통해 컴파일을 하자. git clone https://github.com/shellphish/how2heap cd how2heap && make 다음과 같이 파일이 구성된다. 공부 순서는 github README.md 파일에 있는 파일 순서대로 분석할 예정이다. first_fit.c#include #include #include int main() { fprintf(stderr, "This file doesn't demo..
RTC (Return-to-csu) 기법
IndexRTC(Return-to-csu) 란?예제 코드 (C)Gadget #1Gadget #2공격 시나리오1) bss영역에 read함수로 /bin/sh 문자열 저장2) write함수로 read함수 주소 leak3) system("/bin/sh"); 호출익스플로잇refRTC(Return-to-csu) 란?64bit 운영체제에서 버퍼 오버플로우가 발생할 때, csu Gadget을 이용하여 레지스터의 값을 세팅하여 익스플로잇하는 공격기법이다. [그림 출처] https://wogh8732.tistory.com/156위 그림과 같이 프로그램이 시작되면 main 함수가 호출되기 전에 start, _libc_start_main, __libc_csu_init과 같은 여러 함수가 실행된다. 이때, __libc_csu_..
[Dreamhack] master_canary - write up
Index문제보호기법 확인master_canary.c문제 풀이0. 마스터 카나리1. Canary Offset2. Exploit익스플로잇 코드Reference master_canaryDescription 이 문제는 서버에서 작동하고 있는 서비스(master_canary)의 바이너리와 소스 코드가 주어집니다. 카나리 값을 구해 실행 흐름을 조작해 셸을 획득하세요. 셸을 획득한 후 얻은 "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다. Environment Ubuntu 16.04 Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (..
[Dreamhack] Master Canary - write up
Index문제보호기법 확인mc_thread.c문제 풀이익스플로잇 코드 Master CanaryDescription Exploit Tech: Master Canary에서 실습하는 문제입니다.https://dreamhack.io/wargame/challenges/359/ 문제보호기법 확인NX bit와 stack Canary가 켜져있다.mc_thread.c// Name: mc_thread.c // Compile: gcc -o mc_thread mc_thread.c -pthread -no-pie #include #include #include #include void giveshell() { execve("/bin/sh", 0, 0); } void init() { setvbuf(stdin, 0, 2, 0); s..
[Dreamhack] tcache_dup2 - write up
Index문제보호기법 확인tcache_dup2.c문제풀이익스플로잇 코드 tcache_dup2Description 이 문제는 서버에서 작동하고 있는 서비스(tcache_dup2)의 바이너리와 소스 코드가 주어집니다. 취약점을 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요. "flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다. Environment Ubuntu 19.10 Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) Reference Heap Allocator2https://dreamhack...
[Dreamhack] cmd_center - write up
Index문제보호기법cmd_center.c문제풀이익스플로잇 코드 cmd_centerDescription IP를 확인할 필요가 없습니다! 혹시 다른 명령어는 못쓰나요? 다른 명령어를 사용했다면 플래그를 획득하세요! References https://dreamhack.io/learn/2/1#3 https://dreamhack.io/learn/2/14#3https://dreamhack.io/wargame/challenges/117/문제보호기법스택 카나리를 제외하고 모든 보호기법이 걸려있다.cmd_center.c#include #include #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } int main()..
[Dreamhack] sint - write up
Index문제보호기법sint.c문제풀이read 함수 원형익스플로잇 코드 sintDescription 이 문제는 서버에서 작동하고 있는 서비스(sint)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 get_shell 함수를 실행시키세요. 셸을 획득한 후, "flag" 파일을 읽어 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{...} 입니다. Environment Ubuntu 16.04 Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000) Reference Integer issueshttps://dreamhack.io..