fastbin range fake chunk 찾기 자동화

msh1307·2022년 11월 30일
0

etc

목록 보기
8/21

16.04에서 fake chunk를 만들 수 없을때, fastbin range에서 size check를 우회하기 위해서 fake chunk를 찾아야 한다.

import gdb
import struct

addr = 0x602000 
length = 0x50 
bp = 0x400e9c 
file_name = './secretgarden' 

gdb.execute("file %s"%file_name)
gdb.execute("b * %s"%hex(bp))
gdb.execute("r")

inf = gdb.inferiors()[0]
m = inf.read_memory(addr,length).tolist()

for i in range(8):
    cur = i
    while(cur < length-7):
        val = b''
        for j in range(8):
            val += m[cur + j]
        val = struct.unpack('<Q',(val))[0]
        sz = (val & 0x00000000ffffffff)
        if(0x20 <=sz <= 0x80):
            print("found sz : ",hex(sz))
            print("addr : "+hex(addr+cur-0x8))
        cur += 8

자동으로 찾아줄 수 있다.
https://github.com/msh1307/fastbin_fakechunk_finder
github에도 올라가있다.
gdb -q -x ./script.py로 실행시킬 수 있다.

profile
https://msh1307.kr

0개의 댓글