'분류 전체보기' 카테고리의 글 목록
tistraw0454 님의 블로그

how2heap
[how2heap] tcache poisoning
2025.07.02
https://wargames.ret2.systems/level/how2heap_tcache_poisoning_2.27대충 2.27 버전만 정리해보았다.tcache poisoning 이란?tcache에 있는 free chunk의 fd(다음 청크 포인터)를 덮어서, 다음 malloc()이 원하는 주소를 반환하게 만드는 공격 기법free된 청크는 tcache bin에 들어가고 `tcache[0x40] → chunk1 → chunk2 → NULL` 이런식으로 단방향 리스트로 연결이된다.fd를 덮으면?다음 malloc 시 그 주소를 반환하게 된다. (tcache 는 fd를 따라가며 chunk를 pop하기 때문)double free 보호도 우회가 가능하다. (보호 로직은 fd== tcache[bin]일 때만 탐지..

how2heap
[how2heap] overlapping_chunks
2025.05.22
heap Chunk 란?header 포함한 영역 + malloc()으로 할당 받는 영역header (prev_size + size)prev_size : 이전 청크의 크기로 크기가 128bit 이상인 chunk가 free될 때, 다음 청크 prev_size가 세팅fastbin을 free할 땐 항상 0으로 유지, PREV_INUSE bit가 0이 되어야만 세팅근데 실제로 돌려보니까 최신 우분투 버전에서는 8bytes만 header로 저장한다.(prev_size, FD,BK에 대한 정보가 저장되지않음을 확인할 수 있다.)size : 현재 청크의 크기로 하위 3bit는 flag로 쓰인다.PREV_INUSE(0x1) : 이전 chunk가 사용중 또는 fastbin일 때 설정되는 플래그IS_MMAPPED(0x2) ..

Pwn
_rtld_global._dl_rtld_lock_recursive 는 어디에 있냐.
2025.05.03
결론: 버전 문제뒤져도 뒤져도 맘에 드는 한국어 글이 없어서 정리한다.https://dreamhack.io/wargame/challenges/360 Overwrite _rtld_globalDescription Exploit Tech: _rtld_global에서 실습하는 문제입니다.dreamhack.io해당 문제를 풀면서, `p &_rtld_global._dl_rtld_lock_recursive` 를 찾을 수가 없어서 직접 주소를 찾아보았다. 일단 저 부분이 무엇인지에 대해 알아보자. 프로그램이 시작될 때?우리는 프로그램을 시작하기에 앞서 _start 를 수행한다.커널로부터 받은 argc, argv인자를 저장하고 스택을 초기화한 후 glibc내에 정의된 __libc_start_main()를 호출한다. __..

Pwn
CTF 문제풀이에서 Dockerfile 활용법
2025.03.13
ctf나 wargame 문제를 풀 때보면, 문제파일에 도커파일이 포함되곤한다.뭐하는 파일인지 알아보자.도커 파일이란?동일한 환경을 가진 도커 컨테이너를 실행하기위해 필요한 도커 이미지를 만들기 위한 텍스트 파일이다.도커엔진에게 컨테이너가 어떻게 구성되어야 하는지 참고하는 파일으로 베이스 이미지의 선택, 필요한 패키지 설치, 환경변수 설정 등의 작업이 가능하다. 제공된 도커 파일을 이용하면 문제 서버와 동일하게 동작하는 컨테이너를 재현해볼 수 있다.또한, 동일한 환경에서 바이너리를 실행시키며 디버깅을 진행할 수 있다.libc 파일이 필요한 문제이지만 파일이 따로 제공되지 않았다면, 도커 파일을 빌드하고 컨테이너를 띄워서 문제 서버와 동일한 버전의 libc 파일을 꺼내올 수 있다. 위 예시 디렉토리에서는 ..

Pwn
[PWN Dreamhack] PIE & RELRO
2025.03.13
PIC (Position-Independent Code)메모리의 어느 주소에 적재되어도 코드의 의미가 훼손되지 않는다는 성질libc.so와 같은 공유 오브젝트(Shared Object, SO)는 기본적으로 Relocation이 가능하도록 설계되어있다.재배치가 가능하다는 것은 PIC 특성이 있다는 것pic가 적용된 코드는 절대 주소를 사용하지 않으며, rip를 기준으로 데이터를 상대 참조(Relative Addressing)하기 때문에 바이너리가 무작위 주소에 매핑돼도 제대로 실행될 수 있습니다.상대 참조(Relative Addressing)어떤 값을 기준으로 다른 주소를 지정하는 방식PIE (Position-Independent Executable)ASLR 이 코드영역에도 적용되는 보안 기법무작위 주소에..