asp Cookies注入

現在很多網站都加了防注入系統代碼,你輸入注入語句將無法注入~~

感覺這樣的防注入系統不錯,但防注入系統沒有注意到 Cookies 的問題!所以就有了Cookies注入~~

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

如果你學過ASP你應該會知道 Request.QueryString (GET) 或 Request.Form (POST)!

呵,沒錯,這就是我們用於讀取用戶發給WEB服務器的指定鍵中的值!

我們有時爲了簡化代碼,會寫成ID=Request("ID")這樣寫法是簡單了,但問題就來了~~~

我們先看WEB服務是怎樣讀取數據的,他是先取GET中的數據,沒有再取POST中的數據,還會去取Cookies中的數據(暈,書上沒有這麼說,這是和小高交流時才知道~~看來書說的不全~~)

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

就禁止數據的提交! 但他沒有檢測Cookies的數據!問題就來了~~~

那我們怎樣測試是否有Cookies注入問題~

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

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

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

時,就不能看到正常的數據,因爲沒有參數!

我們想知道有沒有Cookies問題(也就是有沒有Request("XXX")格式問題),先用IE輸入

http://www.syue.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) 就是彈對話框

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章