overlapping chunk
overlap technique으로 fastbin attack을 이용해도 되겠지만, 이게 더 간단하다. Poison null byte와 동일하게 off-by-one error만 발생하는 환경에서도 사용할 수 있다. 다만 overflow 되는 것이 null byte 뿐 이라면 사용할 수 없으므로 이 경우 poison null byte를 사용해야 한다. ...
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 실행 결과가 거짓인 상태에서 ...
Note 마지막에 짝이 안맞는 '가 있으면 query가 실행되지 않는다. 짝을 맞춰주거나 주석처리 해주거나 escape 해주어야 한다. SELECT가 아니라 INSERT, UPDATE, DELETE 등이어도 injection 가능하다. 단, UPDATE내부에 sub query로 sql...
Dll injection #1 OpenProcess()로 HANDLE을 얻는다. VirtualAllocEx()로 타겟 프로세스에 injection할 dll의 path를 쓸 공간을 할당한다. WriteProcessMemory()로 step 2의 주소에 path를 쓴다. GetProcAddress()로 LoadLibraryA의 주소를 ...
So injection #1 리눅스는 윈도우의 CreateRemoteThread같은 API를 제공하지 않기 때문에, ptrace를 이용해야 한다. 2016/12/12 - [System/LINUX & UNIX] - ptrace - Linux injection ( code injection / so injection ) #2 환경변수 L...
아이디어 자체는 어렵지 않았으나 libc가 아닌 다른 library의 함수가 호출될거라는 생각을 못했기 때문에 꽤 헤맸다. recv buffer 초기화에 별로 신경을 안썼더니, send의 결과로 받은 값에 이전 send 결과로 받은 데이터가 포함되어 몇 byte 씩 틀어져 있거나 처음에 303031이 들어가 시간을 꽤 소모함. fork를 사...