rosieblue
article thumbnail
[Heap] Exploitation : Poison NULL Byte
Linux Exploitation/Heap 2023. 6. 15. 15:27

Poison NULL Byte 이 공격은 인접한 청크의 메타 데이터를 조작하는 방법으로 size의 하위 1바이트를 overwrite하는 기법이다. 데이터 영역과 다음 청크 size의 flag부분은 바로 붙어있으므로 입력한 값이 조금만 넘쳐도 overwrite하게 된다. 이를 통해 다른 공격과 연계할 수 있다. 이 버그를 트리거하는 함수로는 readdata,strncat,fgets 등이 있다. 꼭 힙이 아니더라도 Off-by-one 등 다른 공격으로도 이어질 수 있다. // gcc -o null1 null1.c #include #include #include int readdata(char *buf, int len){ read(0, buf, len); *(char *)(buf + len) = '\x00';..

article thumbnail
[Heap] Exploitation : Double Free Bug
Linux Exploitation/Heap 2023. 6. 15. 00:51

Double Free Bug Double Free Bug(DFB)는 free(ptr1); free(ptr1);처럼 같은 메모리를 여러번 free했을 때 나타나는 버그이다. 이게 왜 문제인지는 아래에서 설명할 것임 free(ptr1); free(ptr1); free 함수는 포인터를 초기화하지 않는다. 따라서 free를 여러번 하게 되면, freelist에 동일한 주소가 여러번 적히게 된다.(free는 freelist에 노드를 '추가'하는 것과 같다) 원래는 위 코드처럼 연달아 해도 아무 문제 없었는데, freelist에서 연속한 청크가 같은 주소이면(ptr1->ptr1 이런식으로 리스트가 연결되면) 에러 내뿜고 죽는다. 그래서 아래처럼 해주면 우회할 수 있다. free(ptr1); free(ptr2); f..

[Pwnable] 포너블 목차 (계속 추가중)
카테고리 없음 2023. 6. 11. 21:58

Computer Science Basics for Pwnable *모르면 아예 풀 수 없는 CS 포스트만 기재하였음 [System] 컴퓨터 구조, 폰 노이만 구조, x86-64, 레지스터 [System] 컴퓨터 메모리 구조 / 레이아웃 [Assembly] 어셈블리어 필수 명령어 정리본 (스택 관련) [Pwnable] 시스템콜(syscall), 셸, 커널모드 vs 유저모드 [OS] 프로세스 Process - 프로세스 개념, 포그라운드 프로세스 vs 백그라운드 프로세스, ps 명령어 [OS] 스레드(Thread) 아래 목차들의 경우 wargame/CTF write-up은 제외하였음 Pwnable Basics [Shell Code] 셸코드 개념 및 ORW 코드 작성을 통한 실습 [BOF] Stack Buffe..

article thumbnail
[Heap] Exploitation : Unsorted Bin Memory Leak
Linux Exploitation/Heap 2023. 6. 11. 21:39

Heap 시리즈 [Heap] Background : Memory Allocator [Heap] Background : Chunk [Heap] Background : Bin (Fastbin, Unsorted bin, Small bin, Large bin) [Heap] Memory Corruption : Use After Free(UAF) (1) [Heap] Exploitation : Unsorted Bin Memory Leak 이 포스트를 읽기 전에 꼭 [Heap] Background : Bin (Fastbin, Unsorted bin, Small bin, Large bin)의 unsorted bin 파트를 다시 한번 읽고 오길 바란다. Memory Leak 오늘은 Unsorted Bin을 통해 라이브러리..

article thumbnail
[Pwnable] glibc 버전 안 맞는 경우 해결 방법
Linux Exploitation 2023. 6. 10. 16:55

도커 파일 이용하면된다. 이는 힙 익스하는데 glibc.2.29 이상 버전이어서 이전 버전으로 된 것들을 익스플로잇하기 어려웠는데 도커 파일 이용하니까 해당 환경을 구축해서 할 수 있었다. Ubuntu 18.04 64-bit(Glibc 2.27) 실습 환경 Dockerfile FROM ubuntu:18.04 ENV PATH="${PATH}:/usr/local/lib/python3.6/dist-packages/bin" ENV LC_CTYPE=C.UTF-8 RUN apt update RUN apt install -y \ gcc \ git \ python3 \ python3-pip \ ruby \ sudo \ tmux \ vim \ wget # install pwndbg WORKDIR /root RUN git..

article thumbnail
[Heap] Background : Bin (Fastbin, Unsorted bin, Small bin, Large bin)
Linux Exploitation/Heap 2023. 6. 9. 20:59

Heap 시리즈 [Heap] Background : Memory Allocator [Heap] Background : Chunk [Heap] Background : Bin (Fastbin, Unsorted bin, Small bin, Large bin) [Heap] Memory Corruption : Use After Free(UAF) (1) Bin bin은 free chunk들을 저장하는 freelist이다. freelist는 간단히 free된 청크들의 리스트라고 생각하면된다. 청크가 해제되면 Free chunk가 되어 tcache나 bin에 들어간다. 그리고 새로운 청크를 할당할 때 메모리를 새로 할당하는 것이 아니라 bin이나 tcache에서 꺼내 쓴다. (참고로 할당할 청크의 크기가 일정 크기 이..