HITCON-training lab10 wp

0x00

開始堆利用的學習了,做一道HITCON-training的題目,UAF漏洞利用。

0x01

看保護:

在這裏插入圖片描述
一個32位的開了canary和nx保護
0x02
ida分析
在這裏插入圖片描述
一個菜單有加、減、查看功能
看add是什麼樣子
在這裏插入圖片描述1-2 .先會malloc一個8字節的空間,指向print_note_content函數,用來打印content。
3-4 .再malloc一個size用來存放你寫入的content
再看看del_note函數。可以看到這裏free了兩次,第一次free掉content。第二次free掉note。我們發現並沒有把note置null。導致free後我們還可以再次使用。
在這裏插入圖片描述
在這裏插入圖片描述
這裏還有一個cat flag的函數
這裏放上網上一個師傅寫的,我感覺寫的挺明白的
存在UAF漏洞。
1.首先分配note0,content大小爲32字節。
2.再次分配note1,content大小爲32字節。
3.free(note0),存入fast bin chunk(fastbins 是單向鏈表)
4.free(note1),存入fast bin chunk
5.再次分配note2,content大小爲8字節。因爲note1是最後free的,所以應該在fastbin的末尾,當分配note2時,第一個malloc會先把note1的八個字節拿過來,當第二次malloc(8)的時候,會把note0的八個字節拿過來,因爲當malloc的時候,首先會匹配大小相同的chunk。
6.此時,note2的content指向note0->put。我們在note2的content輸入magic的地址,則覆蓋note0->put的地址,即當我們調用note->put打印消息時,就會調用magci函數。
exp網上大都一樣我就不貼了。
一開始我一直有一個疑問就是爲啥要malloc兩次note。一次不行嗎?
我這裏試了一下:
在這裏插入圖片描述好像是可以的。。。。
但具體不知道爲什麼,望路過的大佬們幫幫剛入門的萌新吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章