Pwnable
[how2heap] house_of_spirit
Indexhouse_of_spirit.c (glibc 2.23)Analyze with GDBtcache house of spirit (glibc 2.26~)house of spirit 기법에 대해 정리해볼 것이다. 이 기법은 fastbin chunk 크기의 fake cunk를 해제하여 bin에 삽입하는 공격이다. house_of_spirit.c (glibc 2.23)#include #include int main() { fprintf(stderr, "This file demonstrates the house of spirit attack.\n"); fprintf(stderr, "Calling malloc() once so that it sets up its memory.\n"); malloc(1); fp..
[how2heap] unsafe_unlink
Indexunsafe_unlinkunsafe_unlink.cunlink 매크로 함수 분석_int_free 함수 예제 코드(unsafe_unlink.c) GDB 분석Reference💡환경 : ubuntu 16.04 (glibc 2.23) unsafe_unlink이 기법은 fake chunk와 인접한 chunk가 병합이 일어나면서, 비정상적인 unlink가 발생하는 취약점이다. 사용 조건으로는 2개의 allocated chunk가 필요하고, 앞 chunk에서 힙 오버플로우가 발생해야 한다. 또한, 힙 영역을 전역변수에서 관리해야 한다. unsafe_unlink.c#include #include #include #include #include uint64_t *chunk0_ptr; int main() { se..
[how2heap] fastbin_dup_consolidate
환경 : ubuntu 16.04 (glibc 2.23)fastbin_dup_consolidatefastbin의 consolidate 하는 과정을 통해 malloc.c _int_free 함수의 double free 검증을 우회한다. 따라서, 동일한 chunk를 두번 할당 받을 수 있다. fastbin_dup_consolidate.c#include #include #include int main(void) { void* p1 = malloc(0x40); void* p2 = malloc(0x40); fprintf(stderr, "Allocated two fastbin: p1=%p p2=%p\n", p1, p2); fprintf(stderr, "Now free p1!\n"); free(p1); void* p3 ..
[how2heap] fastbin_dup_into_stack
https://github.com/shellphish/how2heap환경 : ubuntu 16.04 (glibc 2.23) fastbin_dup_into_stack.c#include #include int main() { fprintf(stderr, "This file extends on fastbin_dup.c by tricking malloc into\n" "returning a pointer to a controlled location (in this case, the stack).\n"); unsigned long long stack_var; fprintf(stderr, "The address we want malloc() to return is %p.\n", 8+(char *)&stack_var..