목록PWN (4)
gyue 님의 블로그
0. 개요문제 이름 : old-school문제 유형 : Pwnable 이 문제는 전형적인 힙 취약점처럼 보이지만, 실제 핵심은 다음 두 가지가 결합된 구조이다.shallow copy + 1바이트 refcount overflow이를 기반으로:UAF 생성libc leaktcache poisoninghidden callback hijack까지 이어지는 정석적인 modern heap exploitation chain을 구성할 수 있다.1. 프로그램 구조1-1. Slot 구조 struct Slot { uint32_t idx; uint32_t len; uint32_t cap; uint32_t saved_len; uint32_t mode; // 8: user ptr+8, 0: raw ptr void *ptr; uin..
0. 개요문제 이름 : draft문제 유형 : Pwnable 이 문제는 일반적인 heap 취약점이 아니라,스택 lifetime 관리 실패로 인해 발생한 dangling pointer를 이용하는 문제다.핵심은 매우 단순하다.스택에 있던 데이터를 전역 포인터로 들고 있다가, 함수가 끝난 뒤에도 계속 사용하는 구조 이를 이용해:스택 메모리 leak스택 return address overwritelibc ROP 실행까지 이어지는 exploit chain을 구성할 수 있다.1. 프로그램 구조메뉴 구성:composepeekamenddiscardquit처음 보기에는 단순한 메모 프로그램처럼 보이지만,내부 구현이 문제의 핵심이다.2. 핵심 취약점2-1. compose (문제의 시작) void compose() { ch..
0. 개요문제 이름 : flat문제 유형 : Pwnable 이 문제는 WASM 환경에서 실행되는 프로그램이지만,취약점은 Wasmtime이나 WASM 자체가 아니라 그 위에서 동작하는 VM 형태의 로직에 존재한다.문제 설명 그대로 핵심은 이 한 줄이다.Memory-safe VM, unsafe program목표는 입력을 조작하여 내부 로직을 원하는 방향으로 실행시키고최종적으로 files/flag.txt를 읽는 것이다.1. 실행 환경 분석배포 환경: socat TCP-LISTEN:13337 EXEC:wasmtime --dir=. chall.wasm WASI 환경에서 실행--dir=. 옵션으로 현재 디렉토리 접근 가능 즉, wasm 코드가 파일을 열 수 있다면 files/flag.txt도 읽을 수 있다.2. 초..
0. 개요문제 이름 : AutoSlopChess문제 유형 : Pwnable 이 문제는 UAF와 tcache poisoning을 이용해함수 포인터를 덮어쓰고 원하는 함수를 실행하는 문제였다.목표는 최종적으로 callback 함수 포인터를 조작하여 flag를 출력하는 것이다.1. 프로그램 구조 분석바이너리는 strip되지 않아 주요 함수들이 그대로 드러난다. 대표 함수:recruitChampionWithCertifiedNonHallucinatedMemoryfieldChampionViaDeepCopyCloudsellChampionButOnlyIfRefcountLooksHealthyinspectSigilsWithOverflowResistancecarveSigilsWithMilitaryGradeBoundCheck..