原创 ciscn_final_6

ciscn_final_6 首先,檢查一下程序的保護機制 然後,我們IDA分析一下,在store_game函數裏的getInput存在null off by one漏洞 常規的null off by one漏洞,只是本題邏輯複雜了一點

原创 arr_sun_2016(從下標上溢跑到下標下溢)

arr_sun_2016(從下標上溢跑到下標下溢) 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,v2爲有符號數,因此,這裏存在下標越界的漏洞,但是是向上越界。 看似只能向上越界,實際,我們可以利用整數溢出,來達到劫持棧裏

原创 RCTF2020_bf(string指針的利用)

RCTF2020_bf(string指針的利用) 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,發現是一個brain fuck語言的解釋器,其中在>指令操作中,存在一個off by one,ptr指針可以指向string對象

原创 large bin attack & house of strom

large bin attack & house of strom large bin attack是一種堆利用手法,而house of strom則是在large bin attack的基礎上借用unsorted bin來達到任意地址分

原创 ciscn_2019_ne_6(指針未初始化漏洞)

ciscn_2019_ne_6(指針未初始化漏洞) 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,在delete功能裏,ptr指針存在未初始化的漏洞,因此其ptr的值可以通過其他函數來控制,造成任意地址free。 我們可以

原创 hfctf_2020_sucurebox(0地址引用)

hfctf_2020_sucurebox(0地址引用) 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,在add功能裏,size的判斷不準確,導致size可以很大,使得malloc(size)返回0,但是沒有檢查malloc的

原创 ciscn_final_9(null off by one當無法shrink unsorted bin或者控制prev_size時的利用手法)

ciscn_final_9(null off by one當無法shrink unsorted bin或者控制prev_size時的利用手法) 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,safe_read函數存在一個nu

原创 C++ vector的漏洞可導致double free

在《STL 源碼剖析 -- 侯捷》書籍分析的 tass-sgi-stl-2.91.57-source 源碼中。 對 vector 的 erase(); 函數有疑問: iterator erase(iterator posi

原创 rctf2018_rnote4(堆與dl_load相結合)

rctf2018_rnote4 首先,檢查一下程序的保護機制,無RELRO保護,無PIE保護 然後,我們用IDA分析一下,edit功能裏可以自由控制長度,存在溢出 整個程序沒有任何的輸出 通過堆溢出,我們可以輕鬆構造任意地址寫,但是沒

原创 hctf2016_fheap(partial write)

hctf2016_fheap 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,add函數中,如果字符串長度大於15,則單獨malloc一塊內存存放字符串,否則直接存結點裏。 Delete功能沒有清空指針,因此,存在UAF,

原创 wdb_2018_1st_blind(劫持bss段上的stdout指針來執行任意函數)

wdb_2018_1st_blind(劫持bss段上的stdout指針來執行任意函數) 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,程序裏沒有show功能 有一個後門函數 Delete功能存在UAF,但是delete功

原创 rec_33c3_2016(堆棧不平衡導致漏洞利用)

首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,功能1可以用於棧數據泄露,輕鬆得到glibc地址 功能5有一個函數指針,當輸入爲0時,其值未初始化 因此,只要能控制其指針在棧裏對應的數據,就可以執行任意代碼。但是sign函

原创 shanghai2019_boringheap(abs函數溢出點)

shanghai2019_boringheap 首先,檢查一下程序的保護機制 然後,我們用IDA分析一下,edit函數裏使用了abs函數,abs函數接收4字節有符號int數,當傳入0x80000000時,其返回結果仍然是0x800000

原创 ciscn_2019_ne_3

ciscn_2019_ne_3 (在rop長度過小情況下,通過read劫持read自身的返回來達到後續大量rop) 首先檢查一下程序的保護機制   然後,我們用IDA分析一下,32位棧溢出,難點在於結束變更了兩次esp,因此,我們單純的

原创 PicoCTF_2018_buffer_overflow_3(本地固定canary的爆破)

PicoCTF_2018_buffer_overflow_3 用IDA分析一下程序,程序從一個固定文件裏讀取數據,作爲canary的值。 由於文件內容不變,所以,我們可以直接爆破。 #coding:utf8 from pwn imp