(UNDEAD) unlink
unlink unlink는 consolidate가 발생할 때 연결되어 있던 bins list에서 chunk를 제거하기 위해 호출된다. PREV\_INUSE를 체크해 호출하기 때문에 fastbin chunk에 PREV_INUSE unset한다고 해서 회피할 수 있는 것이 아니다. glibc 2.25’s unlink macro #define unlin...
unlink unlink는 consolidate가 발생할 때 연결되어 있던 bins list에서 chunk를 제거하기 위해 호출된다. PREV\_INUSE를 체크해 호출하기 때문에 fastbin chunk에 PREV_INUSE unset한다고 해서 회피할 수 있는 것이 아니다. glibc 2.25’s unlink macro #define unlin...
The House of Lore free’d small/fast chunk의 bk를 fake_chunk addr로 overwrite. https://github.com/umbum/pwn/blob/master/how2heap/house_of_lore_fast.c https://github.com/umbum/pwn/blob/master/how2heap...
fastbin attack free’d fast chunk의 fd를 fake_chunk addr로 overwrite. 다음 malloc(fast)때 overwrited fast chunk가 반환되면서 fastbin에 ` fake_chunkaddr이 추가되므로, 그 다음 반환 chunk는 fake_chunk`. fake\_chunk[1] = FAST...
The House of Spirit stack overflow로 stack에 있는 포인터 변수 hptr을fake_chunk addr로 overwrite. 이후 free(hptr)하면 fastbin에는 fake\_chunkaddr이 추가되므로, 그 다음 반환 chunk는 ` fake_chunk` /\* set fake\_chunk \*/ fake\_...
overlap technique으로 fastbin attack을 이용해도 되겠지만, 이게 더 간단하다. Poison null byte와 동일하게 off-by-one error만 발생하는 환경에서도 사용할 수 있다. 다만 overflow 되는 것이 null byte 뿐 이라면 사용할 수 없으므로 이 경우 poison null byte를 사용해야 한다. ...
https://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 c...
one_gadget objdump나, one_gadget으로 구한 offset은 library mapping 시작 주소에 +하면된다. constraints 를 확인한다. https://github.com/david942j/one_gadget https://david942j.blogspot.kr/2017/02/project-one-gad...
https://github.com/Gallopsled/pwntools https://docs.pwntools.com/en/stable/intro.html https://docs.pwntools.com/en/stable/globals.html http://docs.pwntools.com/en/stable/tubes.html 32bit에서도 ...
0x3번 system call을 호출하는데, 이는 read()다. 그리고 곧바로 read 결과 처음 4byte로 return하기 때문에 아주 심플한 바이너리다. ASLR과 NX가 적용되어 있기 때문에 shellcode로 리턴하는 것은 불가능. libc.so가 매핑되지 않는, 단일 바이너리이기 때문에 RTL도 불가능하다. 0x8048107 <...
Boolean-based Blind SQL Injection 쿼리 실행 결과의 True / False 여부에 따라 response가 다르다면, Boolean-based Blind를 사용할 수 있다. 꼭 로그인에 성공해야 True인 것은 아니다. query의 실행 결과가 참인 상태에서 로그인에 실패한 것과 query 실행 결과가 거짓인 상태에서 ...