1. 程式人生 > >cookie注入原理以及利用(cookie中轉註入)

cookie注入原理以及利用(cookie中轉註入)

一:cookie注入原理

我們來研究一下怎樣情況下才會有Cookies注入!

如果你學過ASP
你應該會知道 Request.QueryString (GET) 或 Request.Form (POST)!
呵,沒錯,這就是我們用於讀取使用者發給WEB伺服器的指定鍵中的值!
我們有時為了簡化程式碼,會寫成 
ID=Request("ID")
這樣寫法是簡單了,但問題就來了~~~
我們先看WEB服務是怎樣讀取資料的,他是先取GET中的資料,沒有再取POST中的資料,還會去取Cookies中的資料(暈,書上沒有這麼說,這是和小高交流時才知道~~看來書說的不全~~)

我們再看看防注入系統,他會檢測GET和POST中的資料,如果有特殊字元(這裡當然是注入字元了)!

就禁止資料的提交! 但他沒有檢測Cookies的資料!問題就來了~~~
那我們怎樣測試是否有Cookies注入問題~

請先看下面的的連線(示例用,所以連線不是真的)

http://www.xxx.com/1.asp?id=123

如果我們只輸 http://www.xxx.com/1.asp

時,就不能看到正常的資料,因為沒有引數!
我們想知道有沒有Cookies問題(也就是有沒有Request("XXX")格式問題),
先用IE輸入 
http://www.xxx.com/1.asp
載入網頁,顯示不正常(沒有輸引數的原因)
之後在IE輸入框再輸入
javascript:alert(document.cookie="id="+escape("123"));

按回車,你會看到彈出一個對話方塊 內容是: id=123 
之後,你重新整理一個網頁,如果正常顯示,表示是用
Request("ID") 這樣的格式收集資料~~~~,這種格式就可以試Cookies注入了

在輸入框中輸入
javascript:alert(document.cookie="id="+escape("123 and 3=3"));
重新整理頁面,如果顯示正常,可以再試下一步(如果不正常,就有可能也有過濾了)

javascript:alert(document.cookie="id="+escape("123 and 3=4"));重新整理一下頁面
如果不正常顯示,這就表示有注入了~~~

如果程式設計師是用 

Request.QueryString
或 
Request.Form
收集資料的話,是無法利用Cookies繞過防注入系統進行注入的,因為服務程式是直截從GET或POST中讀取資料的,Cookies是否有資料,WEB伺服器是不理的,所以就無法利用了!~

--------------------------------------------------------------------------
為了方便不懂的朋友瞭解
javascript:alert(document.cookie="id="+escape("123"));
的意思,我說明一下
document.cookie="id="+escape("123")  就是把 123 儲存到Cookies 的 ID 中

alert(xxx) 就是彈對話方塊

二:利用(cookie中轉註入)

確認有cookie注入後,利用中轉註入生成檔案,可以利用“啊D注入工具”等自動注入工具來測試此檔案