전체 글 173

CTF-pwnable용 Docker 설치 및 사용법

https://spark.kro.kr/110 [Docker] CTF-Pwnable 환경 구축하기 Pwnable 환경 구축하기 macOS를 사용하고 있어서 Pwnable을 할때 VMware에 Ubuntu를 설치해서 사용해왔습니다. 하지만, 저는 128GB를 사용하고 있어서 용량이 늘 부족합니다. 그래서 생각한 것이 docker를 이 spark.kro.kr 이 자료를 참고하였다!! CTF 도커 설치하는법 요 링크에서 Dockerfile을 다운받은 뒤에, 이걸로 도커 컨테이너 컴파일을 진행하면된다. Dockerfile안에 컨테이너 안에 설치할 pwnable 관련 여러 도구들을 자동으로 설치해주는 내용이 다들어가 있어서 설치가 매우 간편하다. https://gist.github.com/LiveOverflow/b..

오버플로우(Overflow) 관련 비슷한 용어 정리

오버플로우(Overflow) : 정해진 영역을 벗어나는 현상 인티져 오버(언더)플로우(integer over/underflow) : 값이 잘려서 의도하지 않은 값이 들어갈 수 있음. 반복문 우회 버퍼 오버플로우(buffer overflow) : 정해진 버퍼 크기를 넘어서 값이 들어감. 값이 잘리지 않음. 스택 오버플로우(stack overflow) : 정해진 스택의 크기를 넘어서 값이 들어감. 힙 오버플로우(heap overflow) : 정해진 힙의 크기를 넘어서 값이 들어감. 스택 버퍼 오버플로우(stack buffer overflow) : 스택 영역에 있는 버퍼가 정해진 크기를 넘어서 값이 들어감. 힙 버퍼 오버플로우(heap buffer overflow) : 힙 영역에 있는 버퍼가 정해진 크기를 넘..

공부/이모저모 2022.02.11

[Dreamhack] Mitigation for Tcache Double Free Bug & Tcache Duplication

dreamhack system hacking roadmap 강의의 Memory Corruption: Double Free Bug 중 Mitigation for Tcache Double Free Bug & Tcache Duplication 강의 내용을 정리해보았다. https://dreamhack.io/learn/116#t719 로그인 | Dreamhack dreamhack.io 학습 후 감동의 글 동적으로 메모리 할당하고 해제를 두번하면 해제된 메모리를 관리하는 free list에 똑같은 메모리 조각 chunk가 두개 연결되는데, 이때 똑같은 크기에 메모리를 할당요청하면 운영체제의 메모리 효율성 + ptmalloc 메모리 할당자 알고리즘 때문에 방금 사용되고 반납된 즉, 해제된 메모리주소를 그대로 할당해..

diff란? - 컴퓨터 파일 비교 유틸리티

https://ko.wikipedia.org/wiki/Diff diff - 위키백과, 우리 모두의 백과사전 컴퓨터에서 diff는 두 개의 파일 간 차이에 대한 정보를 출력하는 파일 비교 유틸리티이다. 일반적으로 하나의 파일 버전과 동일한 파일의 다른 버전 간의 변경 사항을 보여주는 데 쓰인다. diff는 ko.wikipedia.org 컴퓨터에서 diff는 두 개의 파일 간 차이에 대한 정보를 출력하는 파일 비교 유틸리티이다. 일반적으로 하나의 파일 버전과 동일한 파일의 다른 버전 간의 변경 사항을 보여주는 데 쓰인다. diff는 문서 파일의 줄 사이 변경 사항을 보여준다. https://sourceware.org/git/?p=glibc.git;a=blobdiff;f=malloc/malloc.c;h=80c..

공부/이모저모 2022.02.10

main_arena offset 구하기

main_arena는 heap영역에서 해제된 청크가 Unsorted bin에 처음 등록될때 FD와 BK가 가리키고 있는 영역이다. Use After Free와 같은 취약점을 이용해서 일부러 해제시킨 청크를 그대로 다시 할당하면 FD와 BK가 적힌채로 돌아오는데, 이때 FD와 BK가 main_arena+xx 위치를 가리키고있다. 이때 main_arena의 offset을 이용해 libc_base 주소를 구할 수 있다. 그럼 main_arena의 offset을 편하게 구해주는 도구를 알아보자. 설치 git clone https://github.com/bash-c/main_arena_offset 사용법 #main_arena 폴더 들어간 후 ./main_arena [libc 파일경로] ./main_arena ....

One_gadget Constraints (원가젯 제약조건) 해석하기

one_gadget 툴을 사용하다보면 출력되는 제약조건이 어떤 뜻인지 헷갈릴때가 있다. 아래와 같은 경우 libc-2.31.so 에 존재하는 constraints를 출력시켜보았는데, jun@ubuntu:~/jun/CTF_CONFIG/libc-database$ one_gadget /lib/x86_64-linux-gnu/libc-2.31.so 0xe6c7e execve("/bin/sh", r15, r12) constraints: [r15] == NULL || r15 == NULL [r12] == NULL || r12 == NULL 0xe6c81 execve("/bin/sh", r15, rdx) constraints: [r15] == NULL || r15 == NULL [rdx] == NULL || rdx =..

728x90