House Of Force
首先介紹一下什么是House Of Force
House Of Force 是一種堆利用方法,但是并不是說(shuō) House Of Force 必須得基于堆漏洞來(lái)進(jìn)行利用。如果一個(gè)堆 (heap based) 漏洞想要通過(guò) House Of Force 方法進(jìn)行利用,需要以下條件:
- 能夠以溢出等方式控制到 top chunk 的 size 域
- 能夠自由地控制堆分配尺寸的大小
一句話來(lái)說(shuō),如果我們可以控制top chunk的指針,那么我們就可以達(dá)到任意地址寫,但是glibc對(duì)申請(qǐng)chunk進(jìn)行了驗(yàn)證
// 獲取當(dāng)前的top chunk,并計(jì)算其對(duì)應(yīng)的大小
victim = av->top;
size = chunksize(victim);
// 如果在分割之后,其大小仍然滿足 chunk 的最小大小,那么就可以直接進(jìn)行分割。
if ((unsigned long) (size) >= (unsigned long) (nb + MINSIZE))
{
remainder_size = size - nb;
remainder = chunk_at_offset(victim, nb);
av->top = remainder;
set_head(victim, nb | PREV_INUSE |
(av != &main_arena ? NON_MAIN_ARENA : 0));
set_head(remainder, remainder_size | PREV_INUSE);
check_malloced_chunk(av, victim, nb);
void *p = chunk2mem(victim);
alloc_perturb(p, bytes);
return p;
}
但是當(dāng)我們把size的值改成一個(gè)很大的值比如0xffffffffffffffff,那么就可以輕松繞過(guò)這個(gè)驗(yàn)證,一般的做法是把size改成-1,因?yàn)樵谶M(jìn)行比較時(shí)會(huì)把 size 轉(zhuǎn)換成無(wú)符號(hào)數(shù),因此 -1 也就是說(shuō) unsigned long 中最大的數(shù),所以無(wú)論如何都可以通過(guò)驗(yàn)證。
remainder = chunk_at_offset(victim, nb);
av->top = remainder;
/* Treat space at ptr + offset as a chunk */
#define chunk_at_offset(p, s) ((mchunkptr)(((char *) (p)) + (s)))
之后會(huì)把top指針進(jìn)行更新,然而size段也會(huì)更新更新方法如下
victim = av->top;
size = chunksize(victim);
remainder_size = size - nb;
set_head(remainder, remainder_size | PREV_INUSE);
? 所以,如果我們想要下次在指定位置分配大小為 x 的 chunk,我們需要確保 remainder_size 不小于 x+ MINSIZE。
題目鏈接:鏈接:https://pan.baidu.com/s/1lr2jAQwL9Ow5FVjzrSfbWA 提取碼:tx88
查看保護(hù),pie保護(hù)關(guān)閉
64位ida載入
首先發(fā)現(xiàn)了后門函數(shù)
add函數(shù)
edit函數(shù)
值得注意的是這個(gè)函數(shù)并沒(méi)有對(duì)我們輸入的新長(zhǎng)度進(jìn)行判斷,那么我們就可以修改到top chunk的siez域,實(shí)現(xiàn)House Of Force
先貼一下wp我再詳細(xì)解釋
現(xiàn)在看看調(diào)試
-0x70怎么來(lái)的
前面我說(shuō)了需要將top thunk指向我們想要的地方,那么0xf262a0-0xf26260=0x50,而0x10是因?yàn)閏hunk頭部有0x10大小,因此我我們下次申請(qǐng)的chunk的起始地址是0xf26250 + 0x10 = 0xf26260,然后我們?cè)傩薷牡刂窞閒lag地址再進(jìn)行調(diào)用就可以得到flag文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-855770.html
以上均為本人理解,有任何錯(cuò)誤煩請(qǐng)各位師傅即使指出
參考文章? https://tty-flag.github.io/2021/04/20/House-Of-Force.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-855770.html
到了這里,關(guān)于House Of Force的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!