malloc 할 때 일반적으로 큰 사이즈를 요청하면, brk나 sbrk로 program break를 쭉 늘리거나 감당할만하면, 탑 청크에서 떼주는데, malloc(0x200000) 이런 식으로 엄청 크게 줘버리면, 위 sysmalloc_mmap을 통해 mmap sysc
Top chunk의 size를 조작할 수 있어야함.임의의 크기로 malloc 할 수 있어야함.Top chunk size가 nb + MINSIZE보다 크면 위 로직이 실행된다.remainder_size는 size - nb가 된다.\`chunk_at_offset 매크로는
Unsafe Unlink Unsafe Unlink는 doubly linked list에서 청크를 연결 해제하는 매크로인 unlink를 이용해 aaw 할 수 있게 해주는 공격 기법이다. Conditions > 힙 영역을 전역 변수같이 주소를 알고 있는 위치에 unlink
Unsorted bin attack unsorted bin attack은 free 청크의 BK를 조작할 수 있을 때, 임의 주소에 main_arena 영역의 주소를 쓸 수 있는 공격 기법이다. libc leak, 버퍼 사이즈 덮기 등 추가적인 공격을 연계하기 위해서 사
small bin에서 bck->fd를 조작해서 임의의 주소에 청크를 할당할 수 있는 공격 기법이다.small bin 크기의 힙을 할당할 수 있어야함.small bin chunk를 조작할 수 있어야 함.heap leak이 요구됨.\_int_malloc의 일부이다.nb가
16.04에서 DFB를 할때 fastbin은 size check가 있다.fastbin_index (chunksize (victim)) != idx를 우회할 수 있는 fake chunk를 찾을때, 하위 4바이트만 신경써주면 된다.fastbin_index 매크로가 unsi
0x290 크기로 할당된 청크에 tcache_perthread_struct가 있다.tcache_perthread_struct는 위와 같다.
16.04에서 fake chunk를 만들 수 없을때, fastbin range에서 size check를 우회하기 위해서 fake chunk를 찾아야 한다.자동으로 찾아줄 수 있다.https://github.com/msh1307/fastbin_fakechunk_
docker run -it -v <호스트 디렉토리>:<컨테이너 디렉토리> <이미지 이름>
Safe linking glibc 최신 버전에선 취약한 singly linked list를 위한 mitigation이 추가되었다. 기존 tcache, fastbin 들의 성능을 거의 감소시키지 않고 pointer hijacking을 보호한다. > Partial poi
Install Run Debug Pwntools
__asm__ __volatile__( ".intel_syntax noprefix;" "mov rax, 0;" ".att_syntax;" );
docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v C:\\:/CTF pwn:22.04
b = bytesh = halfwords (2 bytes)w = words (4 bytes)g = giant words (8 bytes)
Run container in privildeged mode Install Qemu-system
ex) print(list(ida_bytes.get_bytes(here(),32)))
gdbserver 127.0.0.1:23946 --attach <PID>gdbserver 127.0.0.1:23946 <file><dbgsrv/linux_server64><dbgsrv/linux_server>
쌩 wsl2에선 마운트된 곳에 core dump 안생기니 tmp에다 생성하도록 수정
C:\\Users\\user0\\.wslconfig