전체 글
[Linux Kernel Exploit] Slab Allocator & msg_msg Struct
1. 개요리눅스 커널 익스플로잇을 공부하다 보면 힙 스프레이 라는 개념이 등장합니다. 스프레이는 직역하면 무언가를 뿌리는 것 인데요. 익스플로잇 관점으로 다시 해석하면 무언가를 뿌리는데 힙 영역에 객체를 뿌리는 것 입니다. 스프레이가 필요한 이유는 리눅스 커널의 randomized free list 때문인데요. 이번 글에선 힙 스프레이에 자주 사용되는 msg_msg 구조체의 구조에 대해 간략히 알아보도록 하겠습니다. 2. Slab Allocatormsg_msg 구조체에 대해 알아보기에 앞서 리눅스 커널의 할당자(Allocator)에 대해 알아보겠습니다. 현재 리눅스 커널은 Slab Allocator를 사용하며 유저 영역의 힙과는 다르게 동작합니다. 구조를 보면 크게 cache라는 덩어리 안에 slab이 ..
[pwnable.tw] calc write-up
시간 제한이 걸려있는 계산기다.편의를 위해 변수 이름을 바꾸고 구조체를 만들었다.00000000 pool_st struc ; (sizeof=0x194, mappedto_16)00000000 ; XREF: calc/r00000000 pool_idx dd ? ; XREF: calc+7D/r00000004 buf dd 100 dup(?) ; XREF: calc+86/r00000194 pool_st ends00000194메인 함수는 계산기 함수 calc를 호출해준다.int __cdecl main(int argc, const ch..
CSAW CTF 2024 Quals (Pwn)
[ solved ] mini-golfing더보기int __cdecl main(int argc, const char **argv, const char **envp){ char s[8]; // [rsp+0h] [rbp-510h] BYREF __int64 v5; // [rsp+8h] [rbp-508h] char v6[1264]; // [rsp+10h] [rbp-500h] BYREF void (__fastcall *v7)(const char *, _QWORD); // [rsp+500h] [rbp-10h] BYREF void (__fastcall *v8)(const char *, _QWORD); // [rsp+508h] [rbp-8h] setvbuf(_bss_start, 0LL, 2, 0LL); se..