Binary Exploitation(3)
-
[바이너리 익스플로잇] Insecure Return Value List : 안전하지 않은 반환 값 목록
Func(arg1,?....) arg1 = Input : Return Value calloc(arg1,arg2) arg1 = -1 : 0 arg1 = 0xa000 : 라이브러리 내 주소
2022.02.09 -
[바이너리 익스플로잇] Format-String-Bug 페이로드 생성 함수 : FSB Payload Generator Fcuntion
def gen_fsb_payload(addr, addr2, N): a1 = str(hex(addr)) a1 = a1[2:len(a1)] a3 = int(a1[:4],16) a2 = int(a1[4:len(a1)-4],16) a1 = int(a1[8:len(a1)],16) print(f'{hex(a1)}\n{hex(a2)}\n{hex(a3)}\n') def create_payload(A, B, fs): rs_len = len(str(A))+ 5 + len(fs) rs = f'%{A}d%XX${fs}' + 'P' * (8 - rs_len % 8) fn = str(N+(len(rs)//8)) rs = rs.replace('XX',fn) if int(fn) > 9 : rs = rs + 'P' return rs...
2022.02.04 -
[바이너리 익스플로잇] Heap Unsafe-Unlink : Heap Overflow와 전역 변수로 heap이 관리될 때 발생하는 임의의 주소 쓰기(AAW) 공격
Heap Overflow로 인해 힙 청크에 페이크 청크를 만들 수 있고 하위 청크의 prev_inuse Flag를 덮어쓸 수 있을 때 Unsafe Unlink를 발생시켜 Unlink 루틴을 악용할 수 있다. 해당 바이너리가 전역 변수에서 Heap 메모리의 주소를 관리하고 있을 경우 Unlink 검증 과정을 우회하여 Heap 메모리 주소가 담겨있는 전역 변수를 해당 전역 변수의 주소 - 16 값으로 변조시킬 수 있고 Heap 메모리 쓰기를 통해 다시 해당 전역 변수의 값을 원하는 값으로 변조 시켜 임의의 주소 쓰기(AAW)가 가능해진다. 해당 공격은 Tcache에서는 발생하지 않으며, fastbin 역시 단일 링크 리스트를 사용하기에 해당 공격이 발생하지 않는다. Fake 청크 생성과 prev_inuse ..
2022.01.24