青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

道。道。道

安全特性不等于安全的特性

   :: 首頁 :: 聯系 :: 聚合  :: 管理

常用鏈接

搜索

  •  

最新評論

說明:本文中所有程序均在Windows 2000 Server中文版 + SP2上編譯運行無誤
開發環境:.Net 框架1.0 Version 1.0.3705

  一、ASP.NET虛擬主機存在的重大隱患

  我曾經在WWW.BRINKSTER.COM申請了一個免費的ASP.NET空間,上傳了兩個程序,其中一個查看目錄和文件的程序證明我的判斷:ASP共享空間服務器存在的一個安全問題,在 ASP+ 共享空間服務器中依然存在并且變得更加難以防范!通過這個程序我可以瀏覽所有用戶的ASP+程序,可以查看服務器的系統日志……,當然,如果我想刪除什么的話也不會有什么問題。為了讓大家更清楚地了解這一問題,我們有必要簡單介紹一下ASP中就已經存在的這一問題。

  ASP中常用的標準組件:FileSystemObject,這個組件為 ASP 提供了強大的文件系統訪問能力,可以對服務器硬盤上的任何有權限的目錄和文件進行讀寫、刪除、改名等操作。FSO對象來自微軟提供的腳本運行庫scrrun.dll中。

  使用下面的代碼就可以在ASP中創建一個FSO對象:

  Set fso = CreateObject("Scripting.FileSystemObject")

  我們使用fso對象包含的屬性和方法,如Drive、Drives、Folder、Floders、File、Files等對服務器的磁盤、目錄和文件進行讀、寫、刪除等操作。這一強大的文件系統訪問能力給ASP共享空間提供者帶來了嚴重的安全問題,很多ASP空間的管理員都刪除此組件或將這個組件改名以避免用戶使用這一標準組件。刪除組件或組件改名確實是一個簡單的方法并且也很有效,但是卻使廣大用戶無法使用它的強大的功能。網絡上還有一種看起來很美的方案,它允許用戶使用 FileSystemObject 組件又不影響服務器的安全,即對每一個用戶都設置一個獨立的服務器用戶和單個目錄的操作權限。但是這種方法是有問題的。因為ASP和ASP.NET中在這方面的問題十分類似,所以我們將在ASP.NET的相應解決辦法部分詳加說明。

  在ASP.NET中我們發現這一問題仍然存在,并且變得更加難以解決。這是因為.NET中關于系統IO操作的功能變得更加強大,而使這一問題更嚴重的是ASP.NET所具有的一項新功能,這就組件不需要象ASP那樣必須要使用regsvr32來注冊了,只需將Dll類庫文件上傳到bin目錄下就可以直接使用了。這一功能確實給開發ASP.NET帶來了很大的方便,但是卻使我們在ASP中將此dll刪除或者改名的解決方法失去效用了,防范此問題就變得更加復雜。在討論解決方案之前,我們先來看一下怎么來實現上述的危險的功能。
  二、文件系統操作示例

  在我們編寫代碼之前,有必要了解一下我們需要用到的幾個主要的類。這幾個類都在System.IO名稱空間下,System.IO 名稱空間包含允許在數據流和文件上進行同步和異步讀寫的類。

  在整個應用程序的開始部分我們需要了解一下服務器的系統信息,這就需要用到System.Environment類,該類提供有關當前環境和平臺的信息以及操作它們的方法。我們通過System.Environment類可以得到系統的當前目錄和系統目錄,這可以使我們更快的發現幾個關鍵的目錄;我們還可以通過獲取運行當前進程的用戶名來幫助我們了解ASP.NET程序運行所使用的用戶,進一步設置用戶權限以避免這一安全問題。

  我們還要使用System.IO名稱空間的其他幾個類是:

  System.IO.Directory:提供用于創建、移動和枚舉通過目錄和子目錄的靜態方法的類

  System.IO.File:提供用于創建、復制、刪除、移動和打開文件的靜態方法的類

  System.IO.FileInfo:提供創建、復制、刪除、移動和打開文件的實例方法的類

  System.IO.StreamReader:實現一個 TextReader,使其以一種特定的編碼從字節流中讀取字符。

  每個我們所使用的類的屬性和方法的具體用法我們將以代碼注釋的方式在程序中加以說明。

  System.IO名稱空間在 .NET FRAMEWORK提供的mscorlib.dll中,在使用VS.Net編程之前需要將此Dll引用到此項目中。

  我們所編寫的程序都使用了Codebehind方式,即每一個aspx程序都有一個對應的aspx.cs程序,aspx程序中只是寫與頁面顯示相關的代碼,所有邏輯實現的代碼都放在相應的aspx.cs文件中,這樣就可以更好得做到顯示與邏輯的分離。由于我們的目的不是討論Codebehind技術,所以就不在對此多加討論了。

  在這篇文章里,我們只介紹幾個主要的類及其關鍵方法的用法,詳細程序請查看附帶的源代碼。

  程序一:顯示服務器的當前信息和全部邏輯驅動器的名稱的程序listdrivers.aspx

  主要方法1:我們使用 GetSysInf() 方法來得到服務器的當前環境和平臺的信息

//獲取系統信息的方法,此方法在listdrivers.aspx.cs文件中
public void GetSysInf () {
//獲取操作系統類型
qDrives = Environment.OSVersion.ToString();
//獲取系統文件夾
qSystemDir = Environment.SystemDirectory.ToString();
/*獲取映射到進程上下文的物理內存量,通過這一內存映射量可以了解ASP.NET程序在運行時需要多少系統物理內存,有助于更好的規劃我們的整個應用,因為物理內存量是以Byte為單位的,所以我們將此數值除以1024,可以得到單位為KB的物理內存量*/
qMo = (Environment.WorkingSet/1024).ToString();
//獲取當前目錄(即該進程從中啟動的目錄)的完全限定路徑
qCurDir = Environment.CurrentDirectory.ToString();
//獲取主機的網絡域名
qDomName = Environment.UserDomainName.ToString();
//獲取系統啟動后經過的毫秒數
qTick = Environment.TickCount;
//計算得到系統啟動后經過的分鐘數
qTick /= 60000;
//獲取機器名
qMachine = Environment.MachineName;
//獲取運行當前進程的用戶名
qUser = Environment.UserName;
/*檢索此計算機上格式為"<驅動器號>:\"的邏輯驅動器的名稱,返回字符串數組,這是下一步操作的關鍵所在*/
achDrives = Directory.GetLogicalDrives();
//獲取此字符串數組的維數,確定有多少個邏輯驅動器
nNumOfDrives = achDrives.Length;
}


  系統信息不需要進行操作,我們簡單的用asp:Label將他們顯示出來就行了。邏輯驅動器的個數在不同的服務器上是不定的,所以用不定長數組保存邏輯驅動器的名稱,而且邏輯驅動器的名稱也是我們下一步瀏覽目錄和文件的基礎,故我們采用了數據網格DataGrid來顯示和處理它。

  顯示和處理邏輯驅動器名稱的DataGrid的代碼(代碼在listdrivers.aspx文件):

<asp:DataGrid id="DriversGrid" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn HeaderText="ID" DataField="ID" />
<asp:BoundColumn HeaderText="磁盤名" DataField="Drivers" />
<asp:HyperLinkColumn
HeaderText="詳細信息"
DataNavigateUrlField="Drivers" DataNavigateUrlFormatString="listdir.aspx?dir={0}"
DataTextField="Detail"
Target="_new" />
</Columns>
</asp:DataGrid>

  前兩個BoundColumn列都是顯示序號和實際邏輯驅動器名稱的,需要說明的是第三列,我們在進入各個邏輯驅動器顯示目錄和文件之前需要將所選擇的邏輯驅動器的名稱傳遞到顯示目錄的文件去,所以需要一個特殊的超級鏈接行HyperLinkColumn,我們將DataNavigateUrlField設置為數據源中要綁定到 HyperLinkColumn 中的超級鏈接的 URL 的字段,在此即邏輯驅動器名稱。然后將DataNavigateUrlFormatString設置為當 URL 數據綁定到數據源中的字段時,此HyperLinkColumn中的超級鏈接的 URL 的顯示格式,即要鏈接到的下一級處理頁面,在此為listdir.aspx?dir={用戶點擊行的邏輯驅動器名稱}
創建數據源的代碼(代碼在listdrivers.aspx.cs文件中):




//通過此方法返回一個集合形式的數據視圖DataView
ICollection CreateDataSource() {
//定義內存中的數據表DataTable
DataTable dt = new DataTable();
//定義DataTable中的一行數據DataRow
DataRow dr;
/*向DataTable中增加一個列,格式:DataColumn("Column", type)
Column為數據列的名字,type為數據列的數據類型*/
dt.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt.Columns.Add(new DataColumn("drivers", typeof(string)));
dt.Columns.Add(new DataColumn("detail", typeof(string)));
//使用for循環將邏輯驅動器的名稱以行的形式添加到數據表DataTable中
for (int i = 0; i < nNumOfDrives; i++) {
//定義新行
dr = dt.NewRow();
//對行中每列進行賦值,注意要與上邊定義的DataTable的行相對應
dr[0] = i; //循環生成的序號
dr[1] = achDrives[i].ToString(); //邏輯驅動器的名稱
dr[2] = "查看詳情";
//向DataTable中添加行
dt.Rows.Add(dr);
}
//根據得到的DataTable生成自定義視圖DataView
DataView dv = new DataView(dt);
//返回得到的視圖DataView
return dv;
}

  我們通過這個方法得到了一個包含所有我們需要的數據的數據視圖DataView,我們只需要在此aspx頁的Page_Load方法中將此數據視圖綁定到DataGrid上就可以了。

  數據綁定代碼(代碼在listdrivers.aspx.cs文件中):

/* 設置DataGrid的數據源DataSource為我們從CreateDataSource()方法得到的數據視圖DataView */
DriversGrid.DataSource = CreateDataSource();
//將此DataGrid進行數據綁定
DriversGrid.DataBind();


  通過上邊介紹的幾種主要方法我們就實現了獲取系統信息和顯示所有邏輯驅動器名稱的功能,并且可以通過相應的鏈接進入下一個顯示目錄和文件名的程序listdir.aspx顯示該邏輯驅動器下的所有目錄和文件。

  程序二:顯示目錄中所有子目錄和文件的程序listdir.aspx

  目錄下有子目錄和文件兩種形式,必須分別對待。我們調用此程序本身對子目錄進行列表顯示,而文件我們需要調用showfile.aspx程序對文件的屬性和內容進行顯示。并且兩者還有不同的刪除方法,所以我們在這里設置了兩個DataGrid,兩個DataTable,兩個DataView,分別處理和顯示目錄和文件。

  顯示和處理目錄和文件的DataGrid的代碼(代碼在listdir.aspx文件):

  顯示目錄或文件的序號和名稱的數據列類似于listdrivers.aspx程序中的相應代碼,這里就不再重復了。對于子目錄和文件分別有各自的處理頁面,所以需要導航到兩個不同的頁面,對于子目錄,我們繼續使用listdir.aspx程序對其下的子目錄和文件進行列表顯示:

<asp:HyperLinkColumn DataNavigateUrlField="DirName"
DataNavigateUrlFormatString="listdir.aspx?dir={0}"
DataTextField="DirDetail"
HeaderText="詳細信息"
Target="_new"
/>
對于文件,我們使用showfile.aspx程序顯示其屬性和內容:
<asp:HyperLinkColumn DataNavigateUrlField="FileName"
DataNavigateUrlFormatString="showfile.aspx?file={0}"
DataTextField="FileDetail"
HeaderText="詳細信息"
Target="_new"
/>

  在兩個DataGrid(DirGrid,FileGrid)中我們分別設置了兩個HyperLinkColumn列來導航到不同的處理頁面。

  在兩個DataGrid中我們都使用了一個刪除的按鈕列:

<asp:ButtonColumn HeaderText="刪除"
Text="刪除"
CommandName="Delete"
/>

  由于添加、更新、刪除功能列都是DataGrid的默認模板列,所以可以在Vs.net中通過DataGrid的屬性生成器自動添加此列。

  獲取上一頁面所傳遞來的參數的代碼:

  因為在下面產生數據源的方法中需要使用由上一個頁面傳遞過來的參數來確定目錄和文件的名稱,所以在頁面的Page_Load方法里使用了下列代碼:

strDir2List = Request.QueryString["dir"];

  字符串strDir2List即傳過來的目錄名或文件名。

  因為我們使用了兩個DateGrid,就需要進行兩次數據綁定,就有兩個不同的生成數據源的方法。

  生成目錄數據網格(DirGrid)數據源的方法:

//通過此方法返回一個集合形式的數據視圖DataView,用來初始化子目錄的DataGrid
ICollection CreateDataSourceDir() {
dtDir = new DataTable();
DataRow dr;
//向DataTable中添加新的數據列,共四列
dtDir.Columns.Add(new DataColumn("DirID", typeof(Int32)));
dtDir.Columns.Add(new DataColumn("DirName", typeof(string)));
dtDir.Columns.Add(new DataColumn("DelDir", typeof(string)));
dtDir.Columns.Add(new DataColumn("DirDetail", typeof(string)));
//根據傳入的參數(目錄名)得到此目錄下所有子目錄名的字符串數組
string [] DirEntries = Directory.GetDirectories(strDir2List);
//使用foreach循環可以對未知長度的數組進行遍歷循環
foreach(string DirName in DirEntries){
dr = dtDir.NewRow();
dr[0] = i;//序號
dr[1] = DirName;//文件夾名稱
dr[3] = "刪除";
dr[3] = "查看詳情";
dtDir.Rows.Add(dr);
i++;
}
DataView dvDir = new DataView(dtDir);
//返回得到的數據視圖
return dvDir;
}
生成文件數據網格(FileGrid)數據源的方法:
//通過此方法返回一個集合形式的數據視圖DataView,用來初始化文件的DataGrid
ICollection CreateDataSourceFile() {
dtFile = new DataTable();
DataRow dr;
dtFile.Columns.Add(new DataColumn("FileID", typeof(Int32)));
dtFile.Columns.Add(new DataColumn("FileName", typeof(string)));
dtFile.Columns.Add(new DataColumn("DelFile", typeof(string)));
dtFile.Columns.Add(new DataColumn("FileDetail", typeof(string)));
//根據傳入的參數(目錄名)得到此目錄下所有文件名的字符串數組
string [] FileEntries = Directory.GetFiles(strDir2List);
foreach(string FileName in FileEntries){
dr = dtFile.NewRow();
dr[0] = i;
dr[1] = FileName;
dr[2] = "刪除";
dr[3] = "查看詳情";
dtFile.Rows.Add(dr);
i++;
}
dvFile = new DataView(dtFile);
return dvFile;
}

  我們編程實現了兩個DataSource只需在頁面的Page_Load方法里對兩個DataGrid進行數據綁定即可將得到的DataTable中的數據顯示在aspx頁面的DataGrid上。

  數據綁定代碼:

//對子目錄數據列表DirGrid進行數據源定義和數據綁定
DirGrid.DataSource = CreateDataSourceDir();
DirGrid.DataBind();
//對文件數據列表FileGrid進行數據源定義和數據綁定
FileGrid.DataSource = CreateDataSourceFile();
FileGrid.DataBind();

  通過我們上邊介紹的主要方法,我們實現了對某個邏輯驅動器或目錄中的所有子目錄和文件進行了列表顯示,并且可以根據顯示結果更進一步的瀏覽子目錄或者查看文件的屬性和內容提要。瀏覽子目錄仍然是通過listdir.aspx這個程序,沒有任何子目錄級別要求,沒有目錄深度限制。
  刪除子目錄和文件的主要方法和代碼:

  在刪除子目錄時,我們需要用到Directory.Delete (string,bool)方法,此方法有兩種:

  1.public static void Delete(string);

  從指定路徑刪除空目錄。

  2.public static void Delete(string, boolean);

  刪除指定的目錄并(如果指示)刪除該目錄中的任何子目錄,將boolean設置為true的話,則刪除此目錄下的所有子目錄和文件,否則將boolean設置為false。

  在這里我們使用了第二種方法,如果選擇刪除的話,將刪除此目錄下的所有子目錄和文件。

  注意:Directory 類的所有方法都是靜態的,因而無需具有目錄Directory的實例就可被調用。

/*實現刪除子目錄的方法,此方法為VS.NET自動添加,注意DataGridCommandEventArgs e為DirGrid中 CommandName="Delete" 的ButtonColumn的事件,通過此事件,我們可以得到是那一行的ButtonColumn按鈕列被點擊,進而確定我們需要刪除的子目錄的名稱*/
private void DirGrid_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){
/*定義一個單元格,e.Item為此事件所發生行的所有項目,e.Item.Cells[1]為整個行的第二個單元格的內容,在此DataGrid中為子目錄的名稱
*/
TableCell ItemCell = e.Item.Cells[1];
//得到此子目錄的名稱的字符串
string item = ItemCell.Text;
//刪除此子目錄
Directory.Delete(item,true);
//刪除后進行數據綁定以更新數據列表
DirGrid.DataBind();
}

  在刪除文件時,我們需要用到File.Delete(string path);

  注意:File 類的所有方法都是靜態的,因而無需具有目錄的實例就可被調用。

private void FileGrid_DeleteCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e) {
TableCell ItemCell = e.Item.Cells[1];
//得到此文件名稱的字符串
string item = ItemCell.Text;
//刪除此文件
File.Delete(item);
//刪除后進行數據綁定以更新數據列表
DirGrid.DataBind();
}

  通過上邊的主要方法我們在頁面上實現了一個刪除某一個子目錄或者文件的功能,此功能在測試時需要慎重使用,一旦刪除無法通過常規方法恢復。其他如目錄或文件改名、修改內容等方法都可以在此程序基礎上添加相應的功能,實現方法也很簡單。各位愛好者可以通過添加相應功能,使之擴充為一個基于Web的服務器文件管理系統。我們也可以由此看到這個程序的危害性,一個沒有對此安全隱患采取防范措施的服務器的文件系統就都暴露在了使用此程序的用戶面前。
  程序三:顯示文件屬性和內容的程序showfile.aspx

  在顯示屬性和內容時需要用到的兩個主要的類:

  System.IO.FileInfo:提供創建、復制、刪除、移動和打開文件的實例方法,并且幫助創建 FileStream 對象。

  System.IO.StreamReader:實現一個 TextReader,使其以一種特定的編碼從字節流中讀取字符。除非另外指定,StreamReader的默認編碼為 UTF-8,而不是當前系統的 ANSI 代碼頁。UTF-8 可以正確處理 Unicode 字符并在操作系統的本地化版本上提供一致的結果。

  Showfile.aspx頁面主要代碼:

<asp:Label id="FileDetail" runat="server"/>

  我們只是將文件的屬性信息和部分內容顯示在此Label上。所以沒有其他復雜的代碼。

  獲取文件信息和內容的主要代碼都在Page_Load方法中(代碼在showfile.aspx.cs文件中):

//接收傳入的參數,確定需要操作的文件名稱
strFile2Show = Request.QueryString["file"];
//根據文件名實例化一個FileInfo對象
FileInfo fi = new FileInfo(strFile2Show);
FileDetail.Text = "文件名:";
FileDetail.Text += strFile2Show+"<br>";
FileDetail.Text += "文件大小";
//獲得文件的大小,然后變換單位為KB
FileDetail.Text += (fi.Length/1024).ToString()+"K<br>";
FileDetail.Text += "創建文件時間:";
//獲得文件的創建日期
FileDetail.Text += fi.CreationTime.ToString();
FileDetail.Text += "上次訪問時間:";
//獲得文件的上次訪問日期
FileDetail.Text += fi.LastAccessTime.ToString()+"<br>";
FileDetail.Text += "上次寫入時間:";
//獲得文件的上次寫入日期
FileDetail.Text += fi.LastWriteTime.ToString()+"<br>";
//實例化一個StreamReader對象,用于讀取此FileInfo的內容
StreamReader FileReader = fi.OpenText();
//定義一個長度為1000的字符數組作為緩沖區
char[] theBuffer = new char[1000];
/*ReadBlock方法:從當前流中讀取最大數量的字符并從索引開始將該數據寫入緩沖區。
參數:
char[] buffer:方法返回時,包含指定的字符數組
int index:buffer 中開始寫入的位置
int count:最多讀取的字符數
*/
int nRead = FileReader.ReadBlock(theBuffer,0,1000);
FileDetail.Text += new String(theBuffer,0,nRead);
//關閉此 StreamReader 并釋放與之關聯的所有系統資源
FileReader.Close();

  到目前為止,我們實現了一個簡單的web頁面的服務器磁盤管理應用程序,可以查看、刪除目錄和文件。如果需要修改文件、新建文件和文件夾等功能,只需稍作修改,添加上相應的代碼就可以。由于我們只是通過這個程序說明服務器中存在的安全隱患,所以在這里就不再實現這些功能了。

  通過這三個簡單的程序,我想大家已經能夠清楚的認識到這一漏洞的危害性了,如果我們不加防范的話,其他用戶的程序就能被惡意使用此功能的用戶查看、刪除,服務器的系統日志、系統文件也沒有任何安全可言了。

posted on 2007-08-07 15:56 獨孤九劍 閱讀(91) 評論(0)  編輯 收藏 引用 所屬分類: Learn articles
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产v日韩v亚洲| 香蕉久久精品日日躁夜夜躁| 国产精品一区二区久久精品| 欧美国产成人在线| 国产一区日韩一区| 亚洲欧美日本精品| 亚洲欧美日韩中文播放| 欧美激情成人在线视频| 欧美黄污视频| 亚洲国产精品成人久久综合一区| 午夜精品久久久久久久久久久久久 | 狠狠色狠狠色综合日日tαg | 亚洲图片自拍偷拍| 一本色道久久综合精品竹菊| 蜜臀av一级做a爰片久久| 久久视频一区| 国产一区免费视频| 欧美一级久久久| 久久久国产91| 国产亚洲精品福利| 欧美一区二区三区的| 午夜精品久久久久久99热| 欧美日韩视频| 一区二区三区视频观看| 亚洲欧美精品一区| 国产精品视频免费| 午夜精品久久久久久久久久久| 亚洲欧美日韩精品| 国产日韩欧美一区在线| 欧美在线播放视频| 麻豆精品视频在线观看视频| 影音先锋亚洲精品| 欧美国产视频日韩| 亚洲免费高清视频| 亚洲欧美精品在线观看| 国产网站欧美日韩免费精品在线观看 | 欧美精选一区| 亚洲视频在线一区观看| 欧美在线综合| 精品动漫一区二区| 欧美激情国产高清| 在线亚洲一区二区| 久久久亚洲一区| 亚洲国产成人在线播放| 欧美—级a级欧美特级ar全黄| 亚洲三级电影在线观看| 亚洲一区二区三区在线播放| 国产精自产拍久久久久久蜜| 欧美一区精品| 亚洲激情成人网| 欧美一激情一区二区三区| 国产亚洲视频在线| 欧美精品一区二区精品网| 亚洲视频在线播放| 蜜臀99久久精品久久久久久软件 | 在线视频精品一区| 久久嫩草精品久久久久| 亚洲日韩欧美视频一区| 国产精品久久久久毛片软件| 久久久久久久久久久久久久一区| 亚洲狠狠婷婷| 久久久久久久久久久成人| 99ri日韩精品视频| 国产曰批免费观看久久久| 欧美精品三区| 久久福利影视| 亚洲午夜极品| 亚洲人成啪啪网站| 美女主播一区| 午夜综合激情| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲国产天堂久久综合网| 久久av红桃一区二区小说| 亚洲欧洲精品一区二区三区波多野1战4| 欧美日韩免费观看一区二区三区| 久久电影一区| 亚洲视频一区二区在线观看| 欧美激情亚洲| 久久综合亚洲社区| 午夜精品在线| 亚洲一区日韩| 日韩午夜中文字幕| 亚洲激情视频在线播放| 国产一区二区精品丝袜| 欧美性猛交xxxx乱大交蜜桃| 免费视频最近日韩| 久久中文欧美| 久久xxxx精品视频| 午夜精品国产精品大乳美女| 亚洲最新视频在线| 日韩亚洲一区二区| 亚洲精品久久视频| 欧美激情久久久久久| 狂野欧美激情性xxxx欧美| 欧美一区二区| 欧美有码在线观看视频| 亚洲一区视频| 亚洲欧美成人在线| 亚洲一区制服诱惑| 亚洲一区3d动漫同人无遮挡| 一本一本久久a久久精品牛牛影视| 最新国产成人在线观看| 亚洲精品国产精品久久清纯直播| 红桃视频国产一区| 国产一区清纯| 精品成人一区二区三区| 一区在线电影| 亚洲国产精品电影在线观看| 136国产福利精品导航| 国外视频精品毛片| 一区二区三区在线观看国产| 在线日韩成人| 亚洲狼人综合| 亚洲一卡二卡三卡四卡五卡| 亚洲欧美日本国产专区一区| 午夜在线不卡| 久久蜜桃精品| 欧美高清免费| 亚洲精品中文字幕在线| 夜夜嗨av一区二区三区中文字幕| 亚洲麻豆国产自偷在线| 99一区二区| 午夜精品偷拍| 久久亚洲欧美| 欧美日韩高清在线一区| 国产精品久久久一区麻豆最新章节| 国产精品欧美风情| 国产一区视频网站| 亚洲国产日韩在线一区模特| 一本色道久久综合亚洲精品按摩 | 正在播放欧美视频| 午夜视频在线观看一区二区三区| 久久久精品性| 亚洲人成啪啪网站| 亚洲性人人天天夜夜摸| 久久国产精品久久久| 久久视频在线看| 欧美三区在线视频| 国内精品视频久久| 99这里有精品| 久久久亚洲综合| 亚洲三级视频在线观看| 性做久久久久久久免费看| 欧美成人精品| 国产色综合天天综合网| 亚洲精品日韩激情在线电影| 午夜欧美理论片| 亚洲高清免费在线| 香蕉免费一区二区三区在线观看| 麻豆9191精品国产| 国产精品久久久久久户外露出 | 欧美一区激情| 亚洲黄网站在线观看| 欧美一站二站| 欧美无砖砖区免费| 亚洲高清视频中文字幕| 亚洲欧美激情四射在线日| 欧美成在线观看| 午夜精品一区二区在线观看 | 一区二区成人精品 | 久久天天躁狠狠躁夜夜爽蜜月| 亚洲激情中文1区| 久久九九精品| 国产精品羞羞答答| 一区二区三区四区精品| 蜜乳av另类精品一区二区| 亚洲欧美久久久| 欧美三区免费完整视频在线观看| 亚洲国产精品久久久| 久久精品中文字幕一区二区三区| 一本一本久久| 欧美另类在线播放| 亚洲人成绝费网站色www| 久久蜜臀精品av| 午夜视频精品| 国产伦精品一区二区三区视频孕妇| 亚洲精品免费看| 亚洲国产精品尤物yw在线观看| 久久爱另类一区二区小说| 国产精品区免费视频| 亚洲一区二区三区四区五区黄| 亚洲激情视频在线播放| 欧美3dxxxxhd| 亚洲国产欧美不卡在线观看| 欧美 日韩 国产在线| 久久久精品日韩| 在线激情影院一区| 欧美凹凸一区二区三区视频| 久久久欧美精品| 亚洲大胆人体视频| 美女脱光内衣内裤视频久久影院| 欧美在线影院在线视频| 国产综合视频| 久久天天躁夜夜躁狠狠躁2022| 欧美一区二区三区视频免费播放| 国产精品一二三视频| 久久精品国产精品亚洲| 欧美在线关看| 在线精品国精品国产尤物884a| 免费在线亚洲|