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

在Linux中使用C語言實現控制流保護(CFG)

安全 網站安全
最近版本的Windows有一個新的緩解措施叫做控制流保護(CFG)。接下來我們就講講如何在Linux中使用C語言實現控制流保護(CFG)。

在Linux中使用C語言實現控制流保護(CFG)

一、前言

最近版本的Windows有一個新的緩解措施叫做控制流保護(CFG)。在一個非直接調用之前——例如,函數指針和虛函數——針對有效調用地址的表檢查目標地址。如果地址不是一個已知函數的入口,程序將會終止運行。

如果一個程序有一個緩沖區溢出漏洞,攻擊者可以利用它覆蓋一個函數地址,并且通過調用那個指針來控制程序執行流。這是ROP攻擊的一種方法,攻擊者構建一系列配件地址鏈,一個配件是一組包含ret指令的指令序列,這些指令都是原始程序中的,可以用來作為非直接調用的起點。執行過程會從一個配件跳到另一個配件中以便做攻擊者想做的事,卻不需要攻擊這提供任何代碼。

兩種非常廣的緩解ROP攻擊的技術是地址空間布局隨機化(ALSR)和棧保護。前者是隨機化模塊的加載基址以便達到不可預料的結果。在ROP攻擊中的地址依賴實時內存布局,因此攻擊者必須找到并利用信息泄漏來繞過ASLR。

關于棧保護,編譯器在其他棧分配之上分配一個值,并設置為每個線程的隨機值。如果過緩沖區溢出覆蓋了函數返回地址,這個值將也被覆蓋。在函數返回前,將校驗這個值。如果不能與已知值匹配,程序將終止運行。

http://p5.qhimg.com/t0191f7827142776e18.png

CFG原理類似,在將控制傳送到指針地址前做一個校驗,只是不是校驗一個值,而是校驗目標地址本身。這個非常復雜,不像棧保護,需要平臺協調。這個校驗必須在所有的可靠的調用目標中被通知,不管是來自主程序還是動態庫。

雖然沒有廣泛部署,但是值得一提的是Clang’s SafeStack。每個線程有兩個棧:一個“安全棧”用來保存返回指針和其他可安全訪問的值,另一個“非安全棧”保存buffer之類的數據。緩沖區溢出將破環其他緩沖區,但是不會覆蓋返回地址,這樣限制了破環的影響。

二、利用例子

使用一個小的C程序,demo.c:

  1. int 
  2.    main(void) 
  3.    { 
  4.        char name[8]; 
  5.        gets(name); 
  6.        printf("Hello, %s.\n", name); 
  7.        return 0; 
  8.    } 

它讀取一個名字存到緩沖區中,并且以換行結尾打印出來。麻雀雖小五臟俱全。原生調用gets()不會校驗緩沖區的邊界,可以用來緩沖區溢出漏洞利用。很明顯編譯器和鏈接器都會拋出警告。

簡單起見,假設程序包含危險函數。

  1. void     
  2.    self_destruct(void) 
  3.    { 
  4.        puts("**** GO BOOM! ****"); 
  5.    } 

攻擊者用緩沖區溢出來調用這個危險函數。

為了使攻擊簡單,假設程序不使用ASLR(例如,在GCC/Clang中不使用-fpie和-pie編譯選項)。首先,找到self_destruct()函數地址。

  1. $ readelf -a demo | grep self_destruct     
  2.     46: 00000000004005c5  10 FUNC  GLOBAL DEFAULT 13 self_destruct 

因為在64位系統上面,所以是64位的地址。Name緩沖區的大小事8字節,在匯編我看到一個額外的8字節分配上面,所以有16個字節填充,然后8字節覆蓋self_destruct的返回指針。

  1. $ echo -ne 'xxxxxxxxyyyyyyyy\xc5\x05\x40\x00\x00\x00\x00\x00' > boom     
  2.     $ ./demo < boom 
  3.     Hello, xxxxxxxxyyyyyyyy?@. 
  4.     **** GO BOOM! **** 
  5.     Segmentation fault 

使用這個輸入我已經成功利用了緩沖區溢出來控制了執行。當main試圖回到libc時,它將會跳轉到威脅代碼,然后崩潰。打開堆棧保護可以阻止這種利用。

  1. $ gcc -Os -fstack-protector -o demo demo.c     
  2.    $ ./demo < boom 
  3.    Hello, xxxxxxxxaaaaaaaa?@. 
  4.    *** stack smashing detected ***: ./demo terminated 
  5.    ======= Backtrace: ========= 
  6.    ... lots of backtrace stuff ... 

棧保護成功阻止了利用。為了繞過過這個,我將不得不猜canary值或者發現可以利用的信息泄漏。

棧保護轉化為程序看起來就是如下這樣:

  1. int     
  2.    main(void) 
  3.    { 
  4.        long __canary = __get_thread_canary(); 
  5.        char name[8]; 
  6.        gets(name); 
  7.        printf("Hello, %s.\n", name); 
  8.        if (__canary != __get_thread_canary()) 
  9.            abort(); 
  10.        return 0; 
  11.    } 

然而,實際上不可能在C中實現堆棧保護,緩沖區溢出是不確定行為,并且canary僅對緩沖區溢出有效,還允許編譯器優化它。

三、函數指針和虛函數

在攻擊者成功上述利用后,上層管理加入了密碼保護措施。看起來如下:

  1. void     
  2.     self_destruct(char *password) 
  3.     { 
  4.         if (strcmp(password, "12345") == 0) 
  5.             puts("**** GO BOOM! ****"); 
  6.     } 

這個密碼是硬編碼的,它是比較愚蠢,但是假設它不為攻擊者所知。上層管理已經要求堆棧保護,因此假設已經開啟。

另外,程序也做一點改變,現在用一個函數指針實現多態。

  1. struct greeter {     
  2.         char name[8]; 
  3.         void (*greet)(struct greeter *); 
  4.     }; 
  5.       
  6.     void 
  7.     greet_hello(struct greeter *g) 
  8.     { 
  9.         printf("Hello, %s.\n", g->name); 
  10.     } 
  11.       
  12.     void 
  13.     greet_aloha(struct greeter *g) 
  14.     { 
  15.         printf("Aloha, %s.\n", g->name); 
  16.     } 

現在有一個greeter對象和函數指針來實現運行時多態。把他想想為手寫的C的虛函數。下面是新的main函數:

  1. int     
  2.     main(void) 
  3.     { 
  4.         struct greeter greeter = {.greet = greet_hello}; 
  5.         gets(greeter.name); 
  6.         greeter.greet(&greeter); 
  7.         return 0; 
  8.     } 

(在真實的程序中,其他東西會提供greeter并挑選它自己的函數指針)

而不是覆蓋返回指針,攻擊者有機會覆蓋結構中的函數指針。讓我們重新像之前一樣利用。

  1. $ readelf -a demo | grep self_destruct     
  2.     54: 00000000004006a5  10 FUNC  GLOBAL DEFAULT  13 self_destruct 

我們不知道密碼,但是我們確實知道密碼校驗是16字節。攻擊應該跳過16字節,即跳過校驗(0x4006a5+16=0x4006b5)。

  1. $ echo -ne 'xxxxxxxx\xb5\x06\x40\x00\x00\x00\x00\x00' > boom     
  2.    $ ./demo < boom 
  3.    **** GO BOOM! **** 

不管堆棧保護還是密碼保護都么有幫助。堆棧保護僅僅保護返回指針,而不保護結構中的函數指針。

這就是CFG起作用的地方。開啟了CFG,編譯器會在調用greet()之前插入一個校驗。它必須指向一個已知函數的開頭,否則將想堆棧保護一樣終止程序運行。因為self_destruct()不是函數的開頭,但是利用后程序還是會終止。

然而,linux還沒有CFG機制。因此我打算自己實現它。

四、函數地址表

正如文中頂端PDF鏈接中描述的,Windows上面的CFG使用bitmap實現。每個位代表8字節內存。如果過8字節包含了函數開頭,這個位設置為1。校驗一個指針意味著校驗在bitmap中它關聯的位。

關于我的CFG,我決定保持相同的8字節解決方案:目標地址的低3位將舍棄。其余24位用來作為bitmap的索引。所有指針中的其他位被忽略。24位的索引意味著bitmap最大只能是2MB。

24位對于32位系統已經足夠了,但是在64位系統上面是不夠的:一些地址不能代表函數的開頭,但是設置他們的位為1.這是可以接受的,尤其是只有已知函數作為非直接調用的目標,降低了不利因素。

注意:根據指針轉化為整數的位是未指定的且不可移植,但是這個實現不管在哪里都能工作良好。

下面是CFG的參數。我將他們封裝為宏以便編譯是方便。這個cfg_bits是支持bitmap數組的整數類型。CFG_RESOLUTION是舍棄的位數,一次“3”是8字節的一個粒度。

  1. typedef unsigned long cfg_bits;     
  2.     #define CFG_RESOLUTION  3 
  3.     #define CFG_BITS        24 

給一個函數指針f,下面的宏導出bitmap的索引。

  1. #define CFG_INDEX(f) \     
  2.       (((uintptr_t)f >> CFG_RESOLUTION) & ((1UL << CFG_BITS) - 1)) 

CFG bitmap只是一個整形數組。初始值為0。

  1. struct cfg {     
  2.         cfg_bits bitmap[(1UL << CFG_BITS) / (sizeof(cfg_bits) * CHAR_BIT)]; 
  3.     }; 

使用cfg_register()在bitmap中手動注冊函數。

  1. void     
  2.    cfg_register(struct cfg *cfg, void *f) 
  3.    { 
  4.        unsigned long i = CFG_INDEX(f); 
  5.        size_t z = sizeof(cfg_bits) * CHAR_BIT; 
  6.        cfg->bitmap[i / z] |= 1UL << (i % z); 
  7.    } 

因為在運行時注冊函數,需要與ASLR一致。如果ASLR開啟了,bitmap每次運行都會不同。將bitmap的每個元素與一個隨機數異或是值得的,加大攻擊者的難度。在完成注冊后,bitmap也需要調整為只讀權限(mprotect())。

最后,校驗函數被用于非直接調用之前。它確保了f先被傳遞給cfg_register()。因為它調用頻繁,所以需要盡量快和簡單。

  1. void     
  2.    cfg_check(struct cfg *cfg, void *f) 
  3.    { 
  4.        unsigned long i = CFG_INDEX(f); 
  5.        size_t z = sizeof(cfg_bits) * CHAR_BIT; 
  6.        if (!((cfg->bitmap[i / z] >> (i % z)) & 1)) 
  7.            abort(); 
  8.    } 

完成了,現在在main中使用它:

  1. struct cfg cfg;     
  2.     
  3.   int 
  4.   main(void) 
  5.   { 
  6.       cfg_register(&cfg, self_destruct);  // to prove this works 
  7.       cfg_register(&cfg, greet_hello); 
  8.       cfg_register(&cfg, greet_aloha); 
  9.     
  10.       struct greeter greeter = {.greet = greet_hello}; 
  11.       gets(greeter.name); 
  12.       cfg_check(&cfg, greeter.greet); 
  13.       greeter.greet(&greeter); 
  14.       return 0; 
  15.   } 

現在再次利用:

  1. $ ./demo < boom     
  2.     Aborted 

正常情況下self_destruct()不會被注冊,因為它不是一個非直接調用的合法目標,但是利用依然不能起作用是因為它在self_destruct()中間被調用,在bitmap中它不是一個可靠的地址。校驗將在利用前終止程序。

在真實的應用程序中,我將使用一個全局的CFG bitmap,在頭文件中使用inline函數定義cfg_check()。

盡管不使用工具直接在C中實現是可能的,但是這將變得更加繁瑣和意出錯。正確的是該在編譯器中實現CFG。

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

2015-09-28 14:12:36

2014-05-26 09:50:19

訪問控制列表ACL文件保護

2014-08-01 15:16:05

SwiftC語言

2013-02-21 17:02:00

C語言

2011-03-04 10:04:31

Linux文件操作命令

2010-02-05 15:59:26

C++函數重載

2020-08-12 08:56:30

代碼凱撒密碼函數

2023-12-07 12:59:46

C語言循環隊列代碼

2011-05-25 13:22:05

PHPJSON

2023-07-04 16:36:03

Linuxcd 命令

2023-07-23 19:26:18

Linuxcat 命令

2023-08-12 15:05:26

Linuxcp 命令

2013-05-14 10:13:06

WindowsLinux操作系統

2023-07-04 15:11:30

TypeScript類型保護

2022-08-30 20:00:37

零信任Linkerd

2021-01-19 05:30:55

C# 8異步流IEnumerable

2023-03-02 19:36:34

C語言

2015-09-01 10:32:11

2015-09-01 14:29:33

2020-12-07 06:25:14

Linux Truncate 命令
點贊
收藏

51CTO技術棧公眾號

人与动物性xxxx| www.黄色网址.com| 久久99国产综合精品免费| 九一亚洲精品| 欧美日本在线播放| 嫩草影院中文字幕| 秋霞网一区二区| 99精品视频免费| 亚洲色图欧美制服丝袜另类第一页| 动漫av免费观看| av一区在线观看| 国产麻豆精品在线| 97涩涩爰在线观看亚洲| 无码一区二区三区在线| 伊人久久一区| 天天影视色香欲综合网老头| 欧美日韩精品一区| 国产丝袜在线视频| 亚洲茄子视频| 最近2019中文免费高清视频观看www99| 亚洲免费在线播放视频| 国产在线88av| 亚洲欧美综合色| 狠狠色伊人亚洲综合网站色| 国产精品成人久久久| 欧美99久久| 亚洲精品一区久久久久久| 欧美成人福利在线观看| heyzo中文字幕在线| 欧美经典一区二区| 精品蜜桃一区二区三区| 亚洲中文字幕在线一区| 亚洲视频中文| 中文字幕欧美日韩va免费视频| 少妇极品熟妇人妻无码| 国产69精品久久| 精品久久久久久| 免费看污污视频| 草碰在线视频| 久久婷婷综合激情| 国产精品国模大尺度私拍| 中文字幕一区二区人妻电影| 欧美99在线视频观看| 在线观看视频亚洲| 黄色国产在线观看| 成人av综合网| 91精品国产色综合久久不卡电影 | 中文字幕av亚洲精品一部二部| 日韩精品高清在线观看| 亚洲天堂网站在线| 成人在线黄色| 欧美性猛交xxxxx免费看| 久久福利一区二区| 男人的天堂在线视频免费观看 | 微拍福利一区二区| 加勒比色老久久爱综合网| 欧美日韩国产综合视频在线观看| 日本熟妇人妻xxxxx| 国产伦子伦对白在线播放观看| 亚洲乱码国产乱码精品精98午夜 | 日本韩国欧美在线| 国产视频九色蝌蚪| av在线理伦电影| 亚洲精品视频在线观看免费 | 亚洲精品四区| 欧美精品成人在线| 日韩精品一区二区亚洲av性色 | 欧美这里只有精品| 欧美xxxx少妇| 亚洲一区二区av电影| 国产 国语对白 露脸| 超碰公开在线| 亚洲精品免费看| 日本福利视频网站| yellow字幕网在线| 亚州成人在线电影| jizzjizz国产精品喷水| 黑人精品视频| 亚洲狠狠爱一区二区三区| 黄色片免费在线观看视频| caoporn免费在线视频| 国产精品久久久久久久久久久免费看| 色综合久久av| 男人天堂久久久| 亚洲欧美另类在线| 欧洲精品在线播放| 黄色在线网站噜噜噜| 日韩欧美亚洲国产一区| 成人3d动漫一区二区三区| 在线日本欧美| 欧美一区二区三区婷婷月色 | 97久久精品人人爽人人爽蜜臀| 国产原创精品| 欧美高清成人| 国产精品国产三级国产普通话三级| 亚洲在线欧美| 日韩专区av| 大荫蒂欧美视频另类xxxx| caopor在线视频| 日韩黄色三级| 亚洲第一天堂无码专区| www.久久国产| 外国成人免费视频| 久久久久亚洲精品| 青青视频在线免费观看| 久久国产人妖系列| 国产一区二区三区无遮挡 | www.亚洲男人天堂| 久草成人在线视频| 三级成人在线视频| 99精品99久久久久久宅男| 天堂在线一二区| 中国av一区二区三区| 久久综合亚洲精品| 日韩高清不卡| 欧美v亚洲v综合ⅴ国产v| xxxx日本免费| 欧美精选一区| 国产精品美女网站| 香蕉视频911| 樱花草国产18久久久久| 搡女人真爽免费午夜网站| 伊人久久大香线蕉av超碰| 国产一区二区日韩精品欧美精品| 欧美国产日韩在线观看成人| 久久精品综合| 国产伦精品一区二区三毛| av一区在线观看| 精品动漫一区二区| 岛国毛片在线播放| 神马午夜久久| 欧美国产日韩一区| 影音先锋国产在线| 91丨porny丨最新| 2021国产视频| 国产精品天堂蜜av在线播放| 日韩电影中文 亚洲精品乱码 | 亚洲最大天堂网| 亚洲v天堂v手机在线| 久久99久久久久久久噜噜| 日本中文字幕在线观看视频| 成人小视频在线观看| 曰韩不卡视频| 成人自拍视频网| 日韩av在线天堂网| 激情五月婷婷在线| 精品一区二区三区在线播放视频 | 精品福利一区二区| 野战少妇38p| 欧美在线1区| 国产在线播放91| 97超碰人人在线| 欧美在线播放高清精品| 9.1成人看片免费版| 国产精品久久久久毛片大屁完整版| 亚洲一区二区三区四区视频| 欧洲日本在线| 欧美蜜桃一区二区三区| 调教驯服丰满美艳麻麻在线视频 | 夜夜嗨av一区二区三区四季av| 艹b视频在线观看| 欧美色图一区| 国产精品pans私拍| 日本熟妇乱子伦xxxx| 成人另类视频| 欧美日韩福利电影| 国产ts人妖调教重口男| 日韩在线视频第一页| 亚洲乱码精品一二三四区日韩在线| 久国产精品视频| 午夜激情久久| 亚洲一区二区久久久久久久| 2024最新电影免费在线观看| 91精品国产综合久久精品性色| 黑人狂躁日本娇小| 精品在线亚洲视频| 亚洲色婷婷久久精品av蜜桃| 免费一级欧美在线大片 | 午夜免费福利在线观看| 欧美猛男gaygay网站| 四虎884aa成人精品| 国产老妇另类xxxxx| 黄色一级片黄色| 群体交乱之放荡娇妻一区二区| 久久xxxx| 伊人激情综合网| 中文字幕日韩免费| 1000精品久久久久久久久| 韩国三级与黑人| 夜夜爽av福利精品导航| 免费在线一区二区| 成人在线高清| 九九视频这里只有精品| 香蕉久久国产av一区二区| 欧美性感一区二区三区| 中文字幕av免费在线观看| 成人短视频下载| 久久久久久香蕉| 欧美1区2区3区| 欧洲精品久久| 玖玖玖视频精品| 26uuu另类亚洲欧美日本一 | 亚洲欧洲自拍偷拍| 国产裸体永久免费无遮挡| 亚洲一区二区在线免费观看视频| 成人影视免费观看| 韩国av一区二区三区四区| 青青草综合在线| 一区三区在线欧| 国产精品成熟老女人| 在线观看h网| 国产婷婷色综合av蜜臀av| 亚洲永久精品视频| 精品人伦一区二区三区蜜桃网站| 欧美自拍偷拍网| 不卡免费追剧大全电视剧网站| 网站一区二区三区| 亚洲人www| 400部精品国偷自产在线观看 | 日韩不卡中文字幕| 在线观看国产小视频| 精品国产91久久久久久| 日本美女黄色一级片| 成人av电影在线播放| 天天干天天综合| 亚洲国产精品第一区二区三区| 性高潮久久久久久久久| 精品精品国产三级a∨在线| 成人免费在线网址| sese综合| 午夜精品美女自拍福到在线| 黄色av电影在线观看| 亚洲女同精品视频| 色呦呦中文字幕| 日韩欧美在线1卡| 亚洲影视一区二区| 精品视频在线视频| 岛国av在线免费| 影音先锋亚洲精品| 亚洲综合欧美日韩| 宅男在线一区| 欧美精品视频www在线观看| 国产无码精品视频| 一区二区三区四区在线| 精品少妇一区二区三区密爱| 国产亚洲午夜高清国产拍精品| 精品伦一区二区三区| 韩国v欧美v日本v亚洲v| 色资源在线观看| 色婷婷综合久久久中文字幕| 国产网址在线观看| 亚洲免费av观看| 又色又爽的视频| 国产日韩欧美精品一区| av无码av天天av天天爽| 成人丝袜18视频在线观看| 绯色av蜜臀vs少妇| 国产精品资源在线| 国产探花在线观看视频| 麻豆国产91在线播放| 爱情岛论坛成人| 日本不卡一二三区黄网| av网址在线观看免费| 久久久天天操| 成人羞羞国产免费网站| 久久香蕉精品| av免费在线播放网站| 久久青草久久| 狠狠热免费视频| 奇米色777欧美一区二区| 欧美日韩第二页| 丝袜诱惑制服诱惑色一区在线观看| www.日本在线播放| 亚洲一区成人| 福利在线一区二区三区| 老司机免费视频一区二区| 男人的天堂最新网址| 国产一区在线视频| 亚洲精品一区二区18漫画| 久久99蜜桃精品| 被黑人猛躁10次高潮视频| 国产成人在线观看| 日本一级大毛片a一| 不卡的av电影| 欧美性xxxx图片| 国产亚洲一二三区| 免费成人美女女在线观看| 亚洲免费观看高清完整版在线| 久久午夜无码鲁丝片| 天天色综合成人网| 中文字幕乱码中文字幕| 日韩一区二区在线免费观看| 成人av一区二区三区在线观看| 亚洲国产美女久久久久| 电影在线高清| 久久香蕉国产线看观看网| 激情网站在线| 免费视频一区二区三区在线观看| 亚洲精品女av网站| 福利片一区二区| 欧美日韩高清免费| 亚洲第一天堂| 国产黄色一级网站| 美国欧美日韩国产在线播放| 一个人看的视频www| 99精品欧美一区二区三区小说 | 国产日产欧产精品推荐色| 能直接看的av| 一区二区国产盗摄色噜噜| 台湾佬中文在线| 欧美一级片在线| 欧洲亚洲在线| 九九久久久久99精品| 97欧美成人| 精品一区在线播放| 欧美精品一线| 亚洲精品中文字幕乱码无线| 国产丝袜美腿一区二区三区| 日韩久久久久久久久| 日韩欧美123| 成人黄色网址| 国产欧美精品一区二区三区介绍| 亚洲盗摄视频| 欧美无砖专区免费| 国产一二三精品| 免费精品在线视频| 欧美色图一区二区三区| 成人在线视频成人| 亲子乱一区二区三区电影| 精品按摩偷拍| 五月丁香综合缴情六月小说| 国产成人午夜精品5599 | 激情久久av一区av二区av三区| 精品国产av一区二区| zzijzzij亚洲日本成熟少妇| 成人日韩av| 亚洲国产欧美一区二区三区不卡| 免费日韩一区二区| 香蕉视频黄色在线观看| 性感美女久久精品| 欧美一级淫片aaaaaa| 久久久久九九九九| 精品按摩偷拍| 亚洲欧洲日产国码无码久久99| 99re这里都是精品| 黄网在线观看视频| 日韩毛片在线观看| 伊人久久综合一区二区| 欧美凹凸一区二区三区视频| 国产一区导航| av黄色免费网站| 欧美在线你懂得| 男人资源在线播放| 91在线视频精品| 欧美91福利在线观看| 下面一进一出好爽视频| 亚洲视频一区在线| 亚洲www视频| 欧美黄色一级视频| 成人性生交视频免费观看| 国产精品毛片久久久久久久| 中文字幕一区二区三区四区视频 | 日韩欧美视频网站| 韩国av一区二区三区四区| 久久久久久久久久网站| 日韩免费电影网站| 制服丝袜在线播放| 国产日韩精品一区观看| 亚洲国产二区| 国产成人精品无码免费看夜聊软件| 欧美性xxxx18| 最新97超碰在线| 成人黄色在线观看| 欧美精品播放| 丝袜熟女一区二区三区| 一本到三区不卡视频| 国产一二三区在线| 成人a级免费视频| 亚洲五月综合| 欧亚乱熟女一区二区在线| 香蕉成人伊视频在线观看| 激情福利在线| 国产精品久久久| 国产一区日韩一区| 日本少妇一级片| 日本韩国欧美在线| 免费av网站在线看| 国产精品一区二区三区免费观看| 亚洲精品九九| 国产极品视频在线观看| 在线播放日韩导航| 黄视频网站在线观看| 青青草原成人| 国产成人日日夜夜| 日韩久久久久久久久| 最近2019中文字幕在线高清| crdy在线观看欧美| 97在线免费公开视频| 国产女人aaa级久久久级| 成人免费公开视频|