만약 Free된 청크를 Realloc 시킨다면 어떻게 될까. 만약 저장되는 bin 이 바뀐다면, realloc 시 DFB가 터지게 된다. 하지만, 이런코드에서는 다음같이, Free된 같은 주소를 받아낼 수 있다. 이말은 Fastbin일경우 Free된 fd를 control이 가능하단 얘기이다 (grin)~
menu_input 함수에서
사실 이게 realloc.c 인줄았는데, 그냥 Implementation을 설명하기 위한 코드였다.... 실제 코드는 https://code.woboq.org/userspace/glibc/malloc/malloc.c.html#_int_realloc 여기 있는거 같다. 다음에 시간내서 분석해봐야겠다
그냥 대충 한줄씩 적는다 catshop 이게 아마 uaf엿을거다 Daysnote 이거 시간 안뺏기고, heapbabe 햇으면 아마 1등 했을텐데 ㅠ g0crack이거 젤 빨리 푼거 같다. 진짜 막힘 없이 쭉쭉 푼듯 머 canary leak 하고 bof 하는거 있엇는데 문제가 기억이 안난다. 너무 졸리다 heapbabe uaf로 function ptr한바이트 주작쳐서 leak하고, 그걸로 system('/bin/sh') 꼴 만들어서 쓱쓱하면된다. 이걸 왜 대회때 못했지,,
쓸거 다써서 안쓰렸는데, 요즘 쓰는게 늘어나서 좀더 써본당 FmtStrrefer : http://python3-pwntools.readthedocs.io/en/latest/fmtstr.html 주 사용법은 fmt =FmtStr( argv ) 꼴로 사용한다. argv 에는 execute_fmt, offset, padlen, numbwritten 이 들어간다. 다 쓰이니까 알아두자.execute_fmt : payload를 보낼때 쓰는 함수를 지정한다. offset : AAAA %p %p 같은거 했을때 몇번째 %p 에서 나오는지 padlen : 패딩 필요할때 패딩 길이numbwritten : 몇글자 먼저 써있는지def send_pay(pay):p.sendline(pay) fmt = FmtStr(execute_..
작년 코게 openctf 떄 해킹 시작해서, 이번년도 첫 코게 참가해서, 처음 본선갔고, 7등 했네요. 작년 초심 잡고, 내년 1등 노리겠습니다
Apprentice's Returnret 슬레드 한번 해주고 원샷으로 뛰면 된다. ret 주소는 문제에서 거르는 주소보다 조금 위에걸로 쓰자. Power QWORD그냥 원샷 써서 따면 된다 Dungeon Crawllevel1그냥 숫자 보내주면 된다level2그냥 덮어주면 된다.level3그냥 bof 하면 된다level4후... level5보다 어렵다. 사실 어렵기보단 짜증났다. 초기화 안된 스택이니까 v3에는 내가 넣은 주소가 들가고, 그거 콜하면 끝나는데 싹다 중간에 대입 하는데 73번만 대입 안한다ㅋㅋ....level5그냥 포맷스트링 하고, bof로 쉘따면 된다. Syscaller's LamentSROP를 써서 mprotect콜하고, 이걸로 코드영역에 쓰기를 준다. 이 때 eip는 write 할때 s..
https://github.com/juckchang/heap_exploit 정리중
Fastbin dup consolidate 1. fastbin size의 heap1, heap2를 할당 2. heap1를 free 3. largebin size의 heap3 할당 (malloc_consolidate) 4. heap1를 free (DFB) 5. 그 후 malloc 2번은 heap1의 주소로 할당됨 heap1를 free 한후 largebin size의 heap을 할당하면 malloc_consolidate가 호출되면서 free되었던 heap1이 unsorted bin 으로 이동하게 된다. 따라서 fast-top에는 heap1이 없어짐으로 heap1을 한번더 free할 수 있다. 그 후 malloc 2번은 각각 fastbin, unsorted bin 에서 주소를 꺼내오면서 Duplicate가 된다.