CTF/PWNABLE
-
Problemset 문제 모음CTF/PWNABLE 2021. 1. 21. 00:45
Syscall [HackCTF] Register Writeup [pwnable.tw] orw Writeup Buffer Overflow [HackCTF] Basic_BOF #1 [HackCTF] Basic_BOF #2 [HackCTF] Poet [HackCTF] j0n9hyun's secret Writeup [HackCTF] Beginner_Heap Writeup Format String Bug [HackCTF] Basic_FSB [HackCTF] Gift [HackCTF] You are silver [0x41414141 CTF] The Pwn Inn Writeup RET Overwrite [HackCTF] 내 버퍼가 흘러넘친다!!! [HackCTF] x64 Buffer Overflow [HackCTF]..
-
Introduction to pwnable 시스템해킹 개론CTF/PWNABLE 2021. 1. 20. 01:03
Roadmap 로드맵 Tutorial 사전 준비 WSL2 : Linux용 Window 하위 시스템 Basic Linux instructions : wargame을 통해 Linux 명령어 익히기 Assembly Language : 어셈블리어에 대해 이해하기 Shellcode : 시스템해킹의 최종 목적인 쉘과 이를 실행시키는 쉘코드에 대해 이해하기 Stack Frame : 스택 영역의 구조와 작동 방식에 대해 이해하기 pwntools : 시스템해킹에 사용하기 위한 python 라이브러리 pwngdb : 시스템해킹에 사용하기 위한 GNU 디버거 Basic exploitations Memory Mitigation : 메모리 보호기법에 대해 이해하기 RET Overwrite : 버퍼 오버플로우를 이용해 스택의 r..
-
RTL(Return-to-libc)CTF/PWNABLE 2021. 1. 16. 03:55
Constraint 제약 조건 Libc base address(라이브러리에 존재하는 gadget을 사용하기 위해) Stack buffer overflow(지역 변수에서의 overflow를 이용해 ret를 gadget의 주소로 조작) Function Epilogue(함수가 exit(0)등을 통해 종료될 경우 ret을 호출하지 않으므로) PRELIMINARY 서론 NX bit(No-eXecute bit)는 실행해야 할 명령어가 존재하는 코드 영역과 데이터가 저장되는 영역의 실행 권한을 분리하고자 도입된 기술이다. NX 특성으로 지정된 메모리 영역은 데이터 저장을 위해서만 사용되므로 buffer overflow를 통한 공격을 어렵게 한다. 위와 같이 NX bit가 적용된 바이너리를 vmmap을 통해 분석해 본..
-
Stack address leakCTF/PWNABLE 2021. 1. 14. 20:43
CONSTRAINT 제약 조건 Libc base address (environ ptr의 주소를 구하기 위해) Arbitary address content leak (environ ptr에 저장된 환경 변수의 위치를 구하기 위해) PRELIMINARY 서론 환경 변수는 운영 체제나 마이크로 서비스에 내장된, 프로그램 바깥에 설정된 변수이다. 이러한 변수들은 (name, value) 쌍으로 존재하는데, 프로세스가 시작할 때 불려와 리눅스 상의 사용자 주소 공간에 저장되었다가 런타임에 name이 value로 치환되는 방식으로 작동한다. [1][2] 이러한 환경 변수들은 main 함수 argc, argv 인자들과 함께 스택에 저장되는데, 이렇게 스택 상에 존재하는 환경 변수의 위치를 라이브러리에 있는 envir..
-
hook OverwriteCTF/PWNABLE 2021. 1. 14. 20:43
CONSTRAINT 제약 조건 Libc base address (hook variable의 주소를 구하기 위해) Arbitary address overwrite (hook variable을 덮어쓰기 위해) Function call (malloc, calloc, free등을 이용해 덮어쓴 hook을 호출) PRELIMINARY 서론 malloc.c를 통해 malloc 함수의 구현을 살펴보면 다음과 같다. void * __libc_malloc (size_t bytes) { mstate ar_ptr; void *victim; void *(*hook) (size_t, const void *) = atomic_forced_read (__malloc_hook); if (__builtin_expect (hook !=..
-
RET OverwriteCTF/PWNABLE 2021. 1. 8. 20:23
CONSTRAINT 제약 조건 Exploit gadget address(shellcode, oneshot_gadget, etc.) Stack buffer overflow(지역 변수에서의 overflow를 이용해 ret를 gadget의 주소로 조작) Function Epilogue(함수가 exit(0)등을 통해 종료될 경우 ret을 호출하지 않으므로) PRELIMIARY 서론 해당 포스팅은 어셈블리어와 스택 프레임파트의 내용을 기반으로 한다. x86 Architecture의 stack frame은 다음과 같다. 메모리의 스택(stack) 영역은 함수 호출에 의해 할당되고, 지역 변수와 매개변수가 저장되는 영역이다. Caller 영역은 호출된 함수의 매개변수, 호출이 끝난 후 돌아갈 return addres..