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

面試官不講武德,居然讓我講講蠕蟲和金絲雀!

安全 數據安全
蠕蟲是一種可以自我復制的代碼,并且通過網絡傳播,通常無需人為干預就能傳播。蠕蟲病毒入侵并完全控制一臺計算機之后,就會把這臺機器作為宿主,進而掃描并感染其他計算機。
  •  1. 蠕蟲病毒簡介
  • 2. 緩沖區溢出
  • 3. 緩沖區溢出舉例
  • 4. 緩沖區溢出的危害
  • 5. 內存在計算機中的排布方式
  • 6. 計算機中越界訪問的后果
  • 7. 避免緩沖區溢出的三種方法
    • 7.1 棧隨機化
    • 7.2 檢測棧是否被破壞
    • 7.3 限制可執行代碼區域
  • 8. 總結

蠕蟲病毒是一種常見的利用Unix系統中的缺點來進行攻擊的病毒。緩沖區溢出一個常見的后果是:黑客利用函數調用過程中程序的返回地址,將存放這塊地址的指針精準指向計算機中存放攻擊代碼的位置,造成程序異常中止。為了防止發生嚴重的后果,計算機會采用棧隨機化,利用金絲雀值檢查破壞棧,限制代碼可執行區域等方法來盡量避免被攻擊。雖然,現代計算機已經可以“智能”查錯了,但是我們還是要養成良好的編程習慣,盡量避免寫出有漏洞的代碼,以節省寶貴的時間!

1. 蠕蟲病毒簡介

蠕蟲是一種可以自我復制的代碼,并且通過網絡傳播,通常無需人為干預就能傳播。蠕蟲病毒入侵并完全控制一臺計算機之后,就會把這臺機器作為宿主,進而掃描并感染其他計算機。當這些新的被蠕蟲入侵的計算機被控制之后,蠕蟲會以這些計算機為宿主繼續掃描并感染其他計算機,這種行為會一直延續下去。蠕蟲使用這種遞歸的方法進行傳播,按照指數增長的規律分布自己,進而及時控制越來越多的計算機。

2. 緩沖區溢出

緩沖區溢出是指計算機向緩沖區內填充數據位數時超過了緩沖區本身的容量,溢出的數據覆蓋在合法數據上。理想的情況是:程序會檢查數據長度,而且并不允許輸入超過緩沖區長度的字符。但是絕大多數程序都會假設數據長度總是與所分配的儲存空間相匹配,這就為緩沖區溢出埋下隱患。操作系統所使用的緩沖區,又被稱為“堆棧”,在各個操作進程之間,指令會被臨時儲存在“堆棧”當中,“堆棧”也會出現緩沖區溢出。

3. 緩沖區溢出舉例

  1. void echo() 
  2.   char buf[4];   /*buf故意設置很小*/ 
  3.   gets(buf); 
  4.   puts(buf); 
  5. void call_echo() 
  6.   echo(); 

反匯編如下:

  1. /*echo*/ 
  2. 000000000040069c <echo>:  
  3. 40069c:48 83 ec 18         sub $0x18,%rsp  /*0X18 == 24,分配了24字節內存。計算機會多分配一些給緩沖區*/ 
  4. 4006a0:48 89 e7            mov %rsp,%rdi    
  5. 4006a3:e8 a5 ff ff ff      callq 40064d <gets> 
  6. 4006a8::48 89 e7           mov %rsp,%rdi 
  7. 4006ab:e8 50  fe ff ff     callq callq 400500 <puts@plt> 
  8. 4006b0:48 83 c4 18         add $0x18,%rsp  
  9. 4006b4:c3                  retq  
  1. /*call_echo*/ 
  2. 4006b5:48 83  ec 08             sub $0x8,%rsp  
  3. 4006b9:b8 00 00 00 00           mov $0x0,%eax 
  4. 4006be:e8 d9 ff ff ff           callq 40069c <echo> 
  5. 4006c3:48 83 c4 08              add $0x8,%rsp  
  6. 4006c7:c3                       retq 

在這個例子中,我們故意把buf設置的很小。運行該程序,我們在命令行中輸入012345678901234567890123,程序立馬就會報錯:Segmentation fault。

要想明白為什么會報錯,我們需要通過分析反匯編來了解其在內存是如何分布的。具體如下圖所示:

如下圖所示,此時計算機為buf分配了24字節空間,其中20字節還未使用。

此時,準備調用echo函數,將其返回地址壓棧。

當我們輸入“0123456789012345678 9012"時,緩沖區已經溢出,但是并沒有破壞程序的運行狀態。

當我們輸入:“012345678901234567 890123"。緩沖區溢出,返回地址被破壞,程序返回 0x0400600。

這樣程序就跳轉到了計算機中其他內存的位置,很大可能這塊內存已經被使用。跳轉修改了原來的值,所以程序就會中止運行。

黑客可以利用這個漏洞,將程序精準跳轉到其存放木馬的位置(如nop sled技術),然后就會執行木馬程序,對我們的計算機造成破壞。

4. 緩沖區溢出的危害

緩沖區溢出可以執行非授權指令,甚至可以取得系統特權,進而進行各種非法操作。第一個緩沖區溢出攻擊--Morris蠕蟲,發生在二十年前,它曾造成了全世界6000多臺網絡服務器癱瘓。

在當前網絡與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕蟲。而緩沖區溢出中,最為危險的是堆棧溢出。因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址。帶來的危害有兩種,一種是程序崩潰導致拒絕服務,另外一種就是跳轉并且執行一段惡意代碼,比如得到shell,然后為所欲為。

5. 內存在計算機中的排布方式

內存在計算機中的排布方式如下,從上到下依次為共享庫,棧,堆,數據段,代碼段。各個段的作用簡介如下:

共享庫:共享庫以.so結尾.(so==share object)在程序的鏈接時候并不像靜態庫那樣在拷貝使用函數的代碼,而只是作些標記。然后在程序開始啟動運行的時候,動態地加載所需模塊。所以,應用程序在運行的時候仍然需要共享庫的支持。共享庫鏈接出來的文件比靜態庫要小得多。

棧:棧又稱堆棧,是用戶存放程序臨時創建的變量,也就是我們函數{}中定義的變量,但不包括static聲明的變量,static意味著在數據段中存放變量。

除此之外,在函數被調用時,其參數也會被壓入發起調用的進程棧中,并且待到調用結束后,函數的返回值也會被存放回棧中,由于棧的先進后出特點,所以棧特別方便用來保存、恢復調用現場。從這個意義上講,我們可以把堆棧看成一個寄存,交換臨時數據的內存區。在X86-64 Linux系統中,棧的大小一般為8M(用ulitmit - a命令可以查看)。

堆:堆是用來存放進程中被動態分配的內存段,它的大小并不固定,可動態擴張或縮減。當進程調用malloc等函數分配內存時,新分配的內存就被動態分配到堆上,當利用free等函數釋放內存時,被釋放的內存從堆中被剔除。

堆存放new出來的對象,棧里面所有對象都是在堆里面有指向的。假如棧里指向堆的指針被刪除,堆里的對象也要釋放(C++需要手動釋放)。當然現在面向對象程序都有'垃圾回收機制',會定期的把堆里沒用的對象清除出去。

數據段:數據段通常用來存放程序中已初始化的全局變量和已初始化為非0的靜態變量的一塊內存區域,屬于靜態內存分配。直觀理解就是C語言程序中的全局變量(注意:全局變量才算是程序的數據,局部變量不算程序的數據,只能算是函數的數據)

代碼段:代碼段通常用來存放程序執行代碼的一塊區域。這部分區域的大小在程序運行前就已經確定了,通常這塊內存區域屬于只讀,有些架構也允許可寫,在代碼段中也有可能包含以下只讀的常數變量,例如字符串常量等。

下面舉個例子來看下代碼中各個部分在計算機中是如何排布的。

  1. #include <stdio.h> 
  2. #include <stdlib.h> 
  3.  
  4. char big_array[1L<<24];     /*16 MB*/ 
  5. char huge_array[1L<<31];    /*2 GB*/ 
  6.  
  7. int global = 0; 
  8.  
  9. int useless() {return 0;} 
  10.  
  11. int main() 
  12.   void *phuge1,*psmall2,*phuge3,*psmall4; 
  13.   int local = 0; 
  14.   phuge1 = malloc(1L<<28);    /*256 MB*/ 
  15.   psmall2 = malloc(1L<<8);    /*256 B*/ 
  16.   phuge3 = malloc(1L<<32);    /*4 GB*/ 
  17.   psmall4 = malloc(1L<<8);    /*256 B*/ 

上述代碼中,程序中的各個變量在內存的排布方式如下圖所示。根據顏色可以一一對應起來。由于了local變量存放在棧區,四個指針變量使用了malloc分配了空間, 所以存放在堆上,兩個數組big_ array,huge_array存放在數據段,main,useless函數的其他部分存放在代碼段中。

6. 計算機中越界訪問的后果

下面再看一個例子,看下越界訪問內存會有什么結果。

  1. typedef struct  
  2.   int a[2]; 
  3.   double d; 
  4. }struct_t; 
  5.  
  6. double fun(int i) 
  7.   volatile struct_t s; 
  8.   s.d = 3.14; 
  9.   s.a[i] = 1073741824;  /*可能越界*/ 
  10.   return s.d; 
  11.  
  12. int main() 
  13.   printf("fun(0):%lf\n",fun(0)); 
  14.   printf("fun(1):%lf\n",fun(1)); 
  15.   printf("fun(2):%lf\n",fun(2)); 
  16.   printf("fun(3):%lf\n",fun(3)); 
  17.   printf("fun(6):%lf\n",fun(6)); 
  18.   return 0;  

打印結果如下所示:

  1. fun(0):3.14 
  2. fun(1):3.14 
  3. fun(2):3.1399998664856 
  4. fun(3):2.00000061035156 
  5. fun(6):Segmentation fault 

在上面的程序中,我們定義了一個結構體,其中 a 數組中包含兩個整數值,還有 d 一個雙精度浮點數。在函數fun中,fun函數根據傳入的參數i來初始化a數組。顯然,i的值只能為0和1。在fun函數中,同時還設置了d的值為3.14。當我們給fun函數傳入0和1時可以打印出正確的結果3.14。但是當我們傳入2,3,6時,奇怪的現象發生了。為什么fun(2)和fun(3)的值會接近3.14,而fun(6)會報錯呢?

要搞清楚這個問題,我們要明白結構體在內存中是如何存儲的,具體如下圖所示。

結構體在內存中的存儲方式

GCC默認不檢查數組越界(除非加編譯選項)。而越界會修改某些內存的值,得出我們意想不到的結果。即使有些數據相隔萬里,也可能受到影響。當一個系統這幾天運行正常時,過幾天可能就會崩潰。(如果這個系統是運行在我們的心臟起搏器,又或者是航天飛行器上,那么這無疑將會造成巨大的損失!)

如上圖所示,對于最下面的兩個元素,每個塊代表 4 字節。a數組占用8個字節,d變量占用8字節,d排布在a數組的上方。所以我們會看到,如果我引用 a[0] 或者 a[1],會按照正常修改該數組的值。但是當我調用 fun(2) 或者 fun(3)時,實際上修改的是這個浮點數 d 所對應的內存位置。這就是為什么我們打印出來的fun(2)和fun(3)的值如此接近3.14的原因。

當輸入 6 時,就修改了對應的這塊內存的值。原來這塊內存可能存儲了其他用于維持程序運行的內容,而且是已經分配的內存。所以,我們程序就會報出Segmentation fault的錯誤。

7. 避免緩沖區溢出的三種方法

為了在系統中插入攻擊代碼,攻擊者既要插入代碼,也要插入指向這段代碼的指針。這個指針也是攻擊字符串的一部分。產生這個指針需要知道這個字符串放置的棧地址。在過去,程序的棧地址非常容易預測。對于所有運行同樣程序和操作系統版本的系統來說,在不同的機器之間,棧的位置是相當固定的。因此,如果攻擊者可以確定一個常見的Web服務器所使用的??臻g,就可以設計一個在許多機器上都能實施的攻擊。

7.1 棧隨機化

棧隨機化的思想使得棧的位置在程序每次運行時都有變化。因此,即使許多機器都運行同樣的代碼,它們的棧地址都是不同的。實現的方式是:程序開始時,在棧上分配一段0 ~ n字節之間的隨機大小的空間,例如,使用分配函數alloca在棧上分配指定字節數量的空間。程序不使用這段空間,但是它會導致程序每次執行時后續的棧位置發生了變化。分配的范圍n必須足夠大,才能獲得足夠多的棧地址變化,但是又要足夠小,不至于浪費程序太多的空間。

  1. int main() 
  2.  long local
  3.  printf("local at %p\n",&local); 
  4.  return 0; 

這段代碼只是簡單地打印出main函數中局部變量的地址。在32位 Linux上運行這段代碼10000次,這個地址的變化范圍為0xff7fc59c到0xffffd09c,范圍大小大約是。在64位 Linux機器上運行,這個地址的變化范圍為0x7fff0001b698到0x7ffffffaa4a8,范圍大小大約是 。

其實,一個好的黑客專家,可以使用暴力破壞棧的隨機化。對于32位的機器,我們枚舉個地址就能猜出來棧的地址。對于64位的機器,我們需要枚舉次。如此看來,棧的隨機化降低了病毒或者蠕蟲的傳播速度,但是也不能提供完全的安全保障。

7.2 檢測棧是否被破壞

??計算機的第二道防線是能夠檢測到何時棧已經被破壞。我們在echo函數示例中看到,當訪問緩沖區越界時,會破壞程序的運行狀態。在C語言中,沒有可靠的方法來防止對數組的越界寫。但是,我們能夠在發生了越界寫的時候,在造成任何有害結果之前,嘗試檢測到它。

GCC在產生的代碼中加人了一種棧保護者機制,來檢測緩沖區越界。其思想是在棧幀中任何局部緩沖區與棧狀態之間存儲一個特殊的金絲雀值,如下圖所示:

這個金絲雀值,也稱為哨兵值,是在程序每次運行時隨機產生的,因此,攻擊者很難猜出這個哨兵值。在恢復寄存器狀態和從函數返回之前,程序檢查這個金絲雀值是否被該函數的某個操作或者該函數調用的某個函數的某個操作改變了。如果是的,那么程序異常中止。

英國礦井飼養金絲雀的歷史大約起始1911年。當時,礦井工作條件差,礦工在下井時時常冒著中毒的生命危險。后來,約翰·斯科特·霍爾丹(John Scott Haldane)在經過對一氧化碳一番研究之后,開始推薦在煤礦中使用金絲雀檢測一氧化碳和其他有毒氣體。金絲雀的特點是極易受有毒氣體的侵害,因為它們平常飛行高度很高,需要吸入大量空氣吸入足夠氧氣。因此,相比于老鼠或其他容易攜帶的動物,金絲雀會吸入更多的空氣以及空氣中可能含有的有毒物質。這樣,一旦金絲雀出了事,礦工就會迅速意識到礦井中的有毒氣體濃度過高,他們已經陷入危險之中,從而及時撤離。

GCC會試著確定一個函數是否容易遭受棧溢出攻擊,并且自動插入這種溢出檢測。實際上,對于前面的棧溢出展示,我們可以使用命令行選項“-fno- stack- protector”來阻止GCC產生這種代碼。當用這個選項來編譯echo函數時(允許使用棧保護),得到下面的匯編代碼

  1. //void echo  
  2. subq $24,%rsp Allocate 24 bytes on stack 
  3. movq  %fs:40,%rax  Retrieve canary  
  4. movq %rax,8(%rsp) Store on stack 
  5. xorl %eax, %eax Zero out register    //從內存中讀出一個值 
  6. movq %rsp, %rdi  Compute buf as %rsp  
  7. call gets Call gets  
  8. movq ‰rsp,%rdi Compute buf as %rsp 
  9. call puts Call puts  
  10. movq 8(%rsp),%rax Retrieve canary  
  11. xorq %fs:40,%rax Compare to stored value   //函數將存儲在棧位置處的值與金絲雀值做比較 
  12. je .L9  If =, goto ok  
  13. call __stack_chk_fail Stack corrupted   
  14. .L9 
  15. addq $24,%rsp Deallocate stack space  
  16. ret 

這個版本的函數從內存中讀出一個值(第4行),再把它存放在棧中相對于%rsp偏移量為8的地方。指令參數各fs:40指明金絲雀值是用段尋址從內存中讀入的。段尋址機制可以追溯到80286的尋址,而在現代系統上運行的程序中已經很少見到了。將金絲雀值存放在一個特殊的段中,標記為只讀,這樣攻擊者就不能覆蓋存儲金絲雀值。在恢復寄存器狀態和返回前,函數將存儲在棧位置處的值與金絲雀值做比較(通過第10行的xorq指令)。如果兩個數相同,xorq指令就會得到0,函數會按照正常的方式完成。非零的值表明棧上的金絲雀值被修改過,那么代碼就會調用一個錯誤處理例程。

棧保護很好地防止了緩沖區溢出攻擊破壞存儲在程序棧上的狀態。一般只會帶來很小的性能損失。

7.3 限制可執行代碼區域

最后一招是消除攻擊者向系統中插入可執行代碼的能力。一種方法是限制哪些內存區域能夠存放可執行代碼。在典型的程序中,只有保存編譯器產生的代碼的那部分內存才需要是可執行的。其他部分可以被限制為只允許讀和寫。

許多系統都有三種訪問形式:讀(從內存讀數據)、寫(存儲數據到內存)和執行(將內存的內容看作機器級代碼)。以前,x86體系結構將讀和執行訪問控制合并成一個1位的標志,這樣任何被標記為可讀的頁也都是可執行的。棧必須是既可讀又可寫的,因而棧上的字節也都是可執行的。已經實現的很多機制,能夠限制一些頁是可讀但是不可執行的,然而這些機制通常會帶來嚴重的性能損失。

8. 總結

計算機提供了多種方式來彌補我們犯錯可能產生的嚴重后果,但是最關鍵的還是我們盡量減少犯錯。

例如,對于gets,strcpy等函數我們應替換為 fgets,strncpy等。在數組中,我們可以將數組的索引聲明為size_t類型,從根本上防止它傳遞負數。此外,還可以在訪問數組前來加上num小于ARRAY_MAX 語句來檢查數組的上界。總之,要養成良好的編程習慣,這樣可以節省很多寶貴的時間。同時最后也推薦兩本相關書籍如下所示。

代碼大全(第二版)

高質量程序設計指南

本文參考:《深入理解計算機系統》 https://baike.baidu.com/item/%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2%E5%87%BA/678453?fr=aladdin#reference-[1]-36638-wrap https://baike.baidu.com/item/%E8%A0%95%E8%99%AB%E7%97%85%E6%AF%92/4094075?fr=aladdin https://zhuanlan.zhihu.com/p/185792677

本文轉載自微信公眾號「嵌入式與Linux那些事」,可以通過以下二維碼關注。轉載本文請聯系嵌入式與Linux那些事公眾號。

 

責任編輯:武曉燕 來源: 嵌入式與Linux那些事
相關推薦

2022-02-17 13:09:55

金絲雀部署服務集群測試

2021-01-27 09:19:44

MySQL數據優化器

2022-11-30 08:00:00

金絲雀部署IT測試

2021-05-26 05:40:32

加密勒索軟件攻擊

2020-12-07 08:04:39

CTO中年公司

2021-07-13 06:35:11

Argo Rollou GitOpsKubernetes

2021-07-29 05:09:54

Linkerd金絲雀部署Flagger

2021-08-02 17:21:08

設計模式訂閱

2020-12-25 11:37:32

DDoS攻擊信用卡黑客

2024-04-01 13:04:01

停機部署滾動部署藍綠部署

2024-04-08 10:35:59

JS代碼容量

2022-01-13 06:49:23

開源項目刪庫

2021-07-06 21:37:05

索引SQL數據

2020-11-06 07:11:40

內存虛擬Redis

2022-04-29 08:17:38

RPC遠程代理代理模式

2023-10-08 07:34:04

2021-06-15 05:52:33

Linkerd canary網絡技術

2021-09-14 11:57:01

雙重勒索勒索軟件黑客攻擊

2020-11-24 08:02:26

API接口重構

2020-07-28 00:58:20

IP地址子網TCP
點贊
收藏

51CTO技術棧公眾號

www三级免费| 亚洲精品色午夜无码专区日韩| 久草免费在线视频观看| 久久精品66| 欧美在线视频日韩| 日韩资源av在线| 国产乱码久久久久| 一本久久知道综合久久| 国产亚洲精品一区二555| 性生活一级大片| xxxxxx欧美| 亚洲卡通动漫在线| 欧美日韩一区在线观看视频| 国产口爆吞精一区二区| 久久久久中文| 欧美激情精品久久久久久大尺度| 少妇网站在线观看| 青草在线视频| 久久夜色精品一区| 99久热re在线精品996热视频| 亚洲黄色网址大全| 好吊妞视频这里有精品| 欧美综合一区二区| 国产aaa免费视频| 嫩草在线视频| 91麻豆123| 国产98在线|日韩| 国产成人精品一区二区色戒| 亚洲激情黄色| 欧美人交a欧美精品| 欧美另类69xxxx| 你懂的一区二区三区| 日韩美女视频在线| 青青草av网站| 成人香蕉视频| 偷拍一区二区三区| 特级西西人体www高清大胆| 成人高潮成人免费观看| 久久亚洲一区二区三区四区| 国产日韩欧美影视| 中文字幕+乱码+中文乱码91| 国产亚洲毛片| 97视频在线观看网址| 欧美三根一起进三p| 亚洲h色精品| 精品国产一区二区三区久久| 国产18无套直看片| 国产99久久精品一区二区300| 欧美三电影在线| 北条麻妃在线视频| 欧美色999| 日本乱人伦一区| 中国丰满人妻videoshd| 蜜桃视频动漫在线播放| 黄网站色欧美视频| aa在线免费观看| 激情都市亚洲| 色网综合在线观看| 欧在线一二三四区| 免费污视频在线一区| 在线观看日产精品| 在线观看的毛片| 亚洲免费一区| 欧美一区二区视频在线观看2022 | 欧美日韩精品在线播放| 很污的网站在线观看| av资源网在线播放| 欧美午夜美女看片| 欧美日韩在线免费播放| 高清成人在线| 欧美精品 日韩| 又黄又爽又色的视频| 国产成人一二片| 亚洲国产精品va在线| 日本一区二区三区网站| 欧美日韩中文一区二区| 日韩一区二区三区国产| 91嫩草|国产丨精品入口| 综合天堂久久久久久久| 久久久久久久影院| 久久久久在线视频| 麻豆免费看一区二区三区| 91色视频在线观看| 天天射天天操天天干| 国产情人综合久久777777| 亚洲午夜精品久久| 欧美1234区| 色狠狠综合天天综合综合| 亚洲va综合va国产va中文| 一区二区三区亚洲变态调教大结局 | 成人av电影免费在线播放| 久久精品第九区免费观看| 韩国三级av在线免费观看| 亚洲欧美中日韩| 777777av| 国产精品成人3p一区二区三区| 色欧美片视频在线观看在线视频| 真实国产乱子伦对白视频| h片在线观看下载| 在线精品视频小说1| 日批视频在线看| 国产乱码精品一区二区三区四区| 国产午夜精品麻豆| 婷婷久久综合网| 香蕉久久久久久久av网站| 国产欧美精品日韩精品| 天堂av电影在线观看| 亚洲三级电影网站| 农村妇女精品一二区| 欧洲精品99毛片免费高清观看| 91精品国产综合久久国产大片 | 美女的胸无遮挡在线观看| 欧美日韩aaaaa| 丰满少妇一区二区三区| 91精品高清| 国产精品扒开腿爽爽爽视频| 空姐吹箫视频大全| 国产精品污污网站在线观看| 欧美日韩福利在线| 国产免费区一区二区三视频免费| 91精品国产麻豆国产自产在线| 国产视频1区2区3区| 日本一区福利在线| 欧美国产乱视频| 中文字幕在线播放不卡| 久久久久久久免费视频了| 黄色成人在线免费观看| 爱情电影网av一区二区| 夜夜嗨av一区二区三区四区| 中日韩精品视频在线观看| 国产综合成人久久大片91| 日韩和欧美的一区二区| 色在线中文字幕| 精品国产青草久久久久福利| 亚洲天堂一级片| 免费人成精品欧美精品| 日本不卡久久| 日本免费一区二区三区四区| 日韩精品在线观看一区| 五月婷婷激情网| 99久久婷婷国产综合精品| av一区二区三区免费观看| 国产一区二区久久久久| 久久九九全国免费精品观看| 一区二区三区在线免费观看视频| 国产精品99久久久久久有的能看| 99re在线观看| 黄a在线观看| 91精品免费在线| 国产suv一区二区三区| 国产麻豆精品95视频| 50度灰在线观看| 欧美视频二区欧美影视| 麻豆国产va免费精品高清在线| 日韩精品一卡二卡| www.av亚洲| 好吊妞无缓冲视频观看| 日韩av三区| 日韩av电影在线网| 在线免费看a| 这里只有精品99re| 欧美人妻精品一区二区三区 | 国产精品免费99久久久| 欧美最近摘花xxxx摘花| 岛国最新视频免费在线观看| 欧美性大战久久久| 全网免费在线播放视频入口| 盗摄精品av一区二区三区| 久激情内射婷内射蜜桃| 亚洲性视频大全| 国产精品欧美风情| 久久黄色美女电影| 欧美一级淫片007| 日韩三级视频在线播放| 久久精品视频网| 中文字幕中文在线| 好吊日精品视频| 欧美日韩天天操| 中文字幕日韩亚洲| 性色av一区二区三区在线观看 | 成人在线免费av| 久青草国产97香蕉在线视频| 人妻视频一区二区三区| 色综合天天综合网天天狠天天| 黑森林av导航| 久久午夜激情| 91精品一区二区三区四区| 欧美午夜18电影| 国产欧亚日韩视频| 电影在线观看一区| 丝袜情趣国产精品| 免费a视频在线观看| 欧美丝袜丝交足nylons图片| 久久国产免费观看| 国产欧美综合在线| 中文字幕乱妇无码av在线| 麻豆精品91| 黄色一级片黄色| 青青草国产成人a∨下载安卓| 日韩av免费看网站| a级毛片免费观看在线| 精品一区电影国产| 成人福利小视频| 欧美在线短视频| 久久黄色小视频| 中文字幕精品一区二区精品绿巨人| 37pao成人国产永久免费视频| 欧美五码在线| 91av一区二区三区| 日韩成人亚洲| 97在线视频免费看| 丝袜综合欧美| 中文字幕亚洲欧美日韩高清| 午夜福利一区二区三区| 欧美一区二区三区视频在线观看| 国产探花在线视频| 久久精品视频免费| 久久久久成人精品无码中文字幕| 亚洲国产影院| wwwjizzjizzcom| 99久久99久久精品国产片果冰| 国产精品美女久久| 丝袜诱惑一区二区| 久久精品国产视频| 日韩a在线观看| 亚洲成人黄色在线| 色av性av丰满av| 五月天激情小说综合| 久久久一区二区三区四区| 亚洲精品自拍动漫在线| 小嫩苞一区二区三区| 国产精品私人影院| 色www亚洲国产阿娇yao| 中文字幕欧美日本乱码一线二线| 日本网站在线看| 免费一级片91| 美女网站免费观看视频| 日韩和欧美一区二区三区| 黄在线观看网站| 亚洲专区一区| 中国丰满人妻videoshd| 亚洲主播在线| 蜜臀久久99精品久久久酒店新书| 亚洲电影在线一区二区三区| 亚洲春色综合另类校园电影| 精品国产乱码久久久久久果冻传媒 | 亚洲欧洲美洲在线综合| 天堂a√在线| 亚洲美腿欧美激情另类| 水莓100在线视频| 欧美成人三级电影在线| 免费国产精品视频| 亚洲黄色av网站| 色偷偷在线观看| 亚洲久久久久久久久久久| 欧美女优在线观看| 伊人久久久久久久久久久久久 | 精品小视频在线| 日本ー区在线视频| 亚洲欧美激情四射在线日| 男人的天堂在线| 中文字幕在线视频日韩| 日本高清中文字幕在线| 久久av.com| 免费不卡av| 欧美亚洲日本网站| avav成人| 97欧洲一区二区精品免费| 精品国产乱子伦一区二区| 免费av在线一区二区| 日本一区二区免费高清| 青草全福视在线| 在线一区免费观看| 狠狠躁狠狠躁视频专区| 国产一区二区不卡在线| 中文字幕乱码在线| 中文字幕精品在线不卡| 青娱乐在线视频免费观看| 婷婷亚洲久悠悠色悠在线播放| 欧美精品色哟哟| 色综合天天天天做夜夜夜夜做| 国产亚洲欧美精品久久久www| 国产精品免费人成网站| 久视频在线观看| 在线亚洲免费视频| 国产av一区二区三区| 精品一区二区三区三区| 成人在线视频亚洲| 欧美在线观看视频| 四虎国产精品永久在线国在线| 国产精品爽爽爽| 日本精品视频| 日本一区二区三区视频在线播放| 免费电影一区二区三区| 国产高清免费在线| 亚洲欧美日韩国产| 四虎国产精品永久免费观看视频| 麻豆传媒一区二区三区| 天天躁日日躁狠狠躁av| 国产日韩综合av| 国产性一乱一性一伧一色| 欧美日韩一级二级| 亚洲日本在线播放| 日韩视频一区在线| 亚洲深夜视频| av日韩免费电影| 99久久综合狠狠综合久久aⅴ| 一级一片免费播放| 中文一区二区| 麻豆传媒在线看| 国产精品伦理一区二区| www.com亚洲| 亚洲国产成人一区| 羞羞电影在线观看www| 国产精品一区二区久久久久| 偷拍精品福利视频导航| 免费在线黄网站| 国产一区二区日韩精品| 国产18无套直看片| 在线看一区二区| 久色视频在线| 欧美专区在线视频| 欧美调教视频| av在线播放亚洲| 风间由美性色一区二区三区| 在线日韩国产网站| 欧美日韩情趣电影| 草草影院在线观看| 国产福利精品av综合导导航| 精品一区亚洲| 丝袜老师办公室里做好紧好爽| 美女尤物国产一区| 影音先锋制服丝袜| 日本韩国欧美国产| 国产午夜精品一区理论片| 欧美在线观看网址综合| 一区二区三区韩国免费中文网站| 亚洲图片小说在线| 久久精品国产亚洲一区二区三区| 免费人成视频在线播放| 中文欧美字幕免费| 中文字幕视频在线播放| 中文字幕精品av| 91久久久久久白丝白浆欲热蜜臀| 懂色av一区二区三区在线播放| 日韩精品丝袜美腿| 亚洲中文字幕无码专区| 91麻豆国产自产在线观看| 亚洲GV成人无码久久精品| 亚洲欧美国产精品| www.成人影院| 亚洲欧洲日韩精品| 狠狠久久亚洲欧美| 精品99在线观看| 精品第一国产综合精品aⅴ| 99riav视频在线观看| 久久99精品久久久久子伦| 亚洲欧美久久| 长河落日免费高清观看| 91精品国产综合久久香蕉麻豆| 欧美挠脚心网站| 国产精品成人播放| 国产精品伦理久久久久久| 精品人妻一区二区三区免费| 亚洲一区二区三区精品在线| 婷婷婷国产在线视频| 日本久久精品电影| 久久婷婷五月综合色国产香蕉| 国产原厂视频在线观看| 91久久久久久国产精品| 一区免费在线| 国产美女免费无遮挡| 欧美区视频在线观看| 亚洲色图美国十次| 国产亚洲情侣一区二区无| 国产精品日本| 后入内射无码人妻一区| 精品噜噜噜噜久久久久久久久试看| 日韩黄色影院| 成人羞羞视频免费| 日韩高清在线电影| 特级片在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 日韩有码在线播放| 福利在线一区| 在线观看的毛片| 亚洲国产毛片aaaaa无费看| 免费在线稳定资源站| 91久久久久久久| 久久亚洲二区| 久久久精品99| 伊人久久男人天堂| 欧美成a人免费观看久久| 在线观看日本一区二区| 午夜欧美视频在线观看| 午夜视频在线观看网站| 国产在线资源一区| 久久99精品久久久久| 中文字幕激情小说| 欧美精品亚州精品|