House of Lore 은 smallbin크기의 힙이 존재할때 bck->fd를 조작하여 임의의 주소에 청크를 할당할 수 있는 공격 기법이다.
이는 할당을 원하는 영역에 Fack chunk를 구성하고 bck->fd를 조작할 수 있다면 원하는 주소에 "힙 청크를 할당" 할 수 있다.
but, 방지 코드인 bck->fd를 검증하는 코드가 존재한다.
//nb = request size..
if(in_smallbin_range(nb)){
idx = smallbin_index(nb)
bin = bin_at(av, idx)
if(victim = last(bin) != bin){
if(victim == 0){
//consolidate(av)
}else{
bck = victim -> bk // bin->bk(victim)->bk
if(glibc_unlikely(bck->fd != victim)) //victim -> (bk -> fd)
//errout
}
}
}
핵심 코드는 위와 같다.
위 조건들을 만족하면 bin -> bk = bck; bck -> fd = bin 코드가 실행되면서 임의의 주소에 힙을 할당 가능.
bin -> bk = bin -> bk -> bk
bin -> bk -> (bk -> fd) = bin
a|b|bin
a|a|bin
a|bin|bin
Fake chunck로
Fake Chunck -- smallbin -- Fake Chunk2
형태로 우회
스택에 힙청크 할당.
이는 힙에 입력하는 값을 통해 BOF를 일으켜, 시스템의 쉘을 딸 수 있다.
'Pwnable > Tech' 카테고리의 다른 글
Heap Series - Use After Free (0) | 2021.12.25 |
---|---|
environ ptr -하나하나 뜯어보기- (0) | 2021.11.29 |
메모리에 관한 내용 정리(pptx) (0) | 2021.11.14 |
Heap - House of Force (0) | 2021.10.27 |
시스템 해킹-각 메모리 보호 기법과 기법 우회 (0) | 2021.08.01 |