printf부분에서 format string bug가 터지는 것을 알 수 있다. 그런데 여기서 우리는 sfp부분 전까지만 덮을 수 있다. 그리고 checksec을 통해 알아본 결과 카나리가 있다는 것을 알 수 있었다. 그런데 카나리가 침범당하면 __stack_chk_fail()함수를 호출하게 된다. 이것의 got 부분을 우리가 원하는 함수로 덮고, stack smashing을 일으키면 함수를 실행시킬 수 있다. 그래서, hackingcamp2019에서 나온 문제인 stack pivoting으로 인해 단련된 스택 관련 경험으로 pop을 4번하게 되면 우리의 버퍼쪽으로 온다는 것을 gdb를 통해 알아내었다. 그래서 ppppr 가젯을 덮고, ROP코드를 이용해 libc leak을 하고, one_gadget 주..
/* We overlay this structure on the user-data portion of a chunk when the chunk is stored in the per-thread cache. */ typedef struct tcache_entry { struct tcache_entry *next; } tcache_entry; tcache_entry 구조체의 모습이다. next라는 이름의 포인터밖에 없다. /* There is one of these for each thread, which contains the per-thread cache (hence "tcache_perthread_struct"). Keeping overall size low is mildly important. Not..