chunk overlap
realloc fake size
realloc fake size
2017.11.04```cint main(){ char *a = malloc(0x8); char *b = malloc(0x8); char *c = malloc(0x40); char *topguard = malloc(0x8); // modify b.size *(b-0x4) = 0x59; realloc(b, 0x8); return 0;}``` trigger & overlapchunk `` a``에서 off-by-one overflow가 발생해 `` b.size``를 수정할 수 있는 상황이라면 이를 이용해 chunk overlap할 수 있으며, 이는 `` b`` chunk의 overflow, libc_base leak으로 연계할 수 있다.```bashgdb-peda$ x/32wx 0x565580000x56558000: 0x00..
Poison null byte
Poison null byte
2017.08.15https://github.com/umbum/pwn/blob/master/how2heap/poison_null_byte.c malloc'ed region에 off-by-one error가 발생할 때, next chunk size의 LSB를 `` 0``으로 만들어 size를 속이는 방법.결과적으로 d chunk 내부에 b2 chunk가 위치하게 되므로 d chunk에 접근해 b2 chunk를 변경할 수 있다. null byte off-by-one error는 종종 발생하기 때문에 많은 경우에 사용할 수 있는 테크닉이라는 점은 장점. b2 chunk는 heap에만 존재할 수 있기 때문에 b2 chunk가 function pointer 등 유용한 데이터를 저장하고 있을 경우나, overlap을 이용한 leak..
overlapping chunk
overlapping chunk
2017.08.15overlap technique으로 fastbin attack을 이용해도 되겠지만, 이게 더 간단하다.Poison null byte와 동일하게 off-by-one error만 발생하는 환경에서도 사용할 수 있다. 다만 overflow 되는 것이 null byte 뿐 이라면 사용할 수 없으므로 이 경우 poison null byte를 사용해야 한다. Case 1https://github.com/shellphish/how2heap/blob/master/overlapping_chunks.c먼저 ``c free(chunk)``하고 `` chunk.size``를 변경1. free(p2) and then change p2.sizep1 prev_size 0x111 p2 prev_size0x111 → 0x1a1 p3p..