轉自http://blog.sina.com.cn/s/blog_6b347b2a0101379o.htmljavascript
cookie注入其原理也和平時的注入同樣,只不過說咱們是將提交的參數已cookie方式提交了,而通常的注入咱們是使用get或者post方式提交,get方式提交就是直接在網址後面加上須要注入的語句,post則是經過表單方式,get和post的不一樣之處就在於一個咱們能夠經過IE地址欄處看到咱們提交的參數,而另一個卻不能。html
相對post和get方式注入來講,cookie注入就要稍微繁瑣一些了,要進行cookie注入,咱們首先就要修改cookie,這裏就須要使用到Javascript語言了。另外cookie注入的造成有兩個必須條件,java
條件1:是程序對get和post方式提交的數據進行了過濾,但未對cookie提交的數據庫進行過濾。數據庫
條件2:在條件1的基礎上,還須要程序對提交數據獲取方式是直接request("xxx")的方式,未指明使用request對象的具體方法進行獲取。cookie
一、先打開http://www.st3yy.com/experts_info.asp?id=128,等頁面徹底打開以後,咱們將IE地址欄清空post
二、在空白的地址欄上,填寫上,如下內容
javascript:alert(document.cookie="id="+escape("128"));測試
( 這裏的「id=」即是「http://www.st3yy.com/experts_info.asp?id=128」中的「id=」,「escape("128")」中的「128」是「http://www.st3yy.com/experts_info.asp?id=128」中的「id=218」了,這兩處要具體根據所獲的數據來決定)spa
三、進行了第二步了,打開另外一個窗口中,試一下,訪問http://www.st3yy.com/experts_info.asp?(既是將「id=128」去掉後),而後看是否能正常訪問。htm
四、從上圖能夠看到,與以前可見訪問以後的頁面與訪問http://www.st3yy.com/experts_info.asp?id=128效果是同樣的。對象
從這裏能夠知道,程序在使用request對象獲取數據的時候並未指明具體使用什麼方法來獲取,而是直接使用request("xx")的方式。
如今cookie造成的一個重要因素已經明確了。
五、第三步,測試一下是否能提交接特殊字符,看程序是否對數據進行過濾。咱們再回到剛纔更改cookie的頁面,而後在IE地址欄處填寫
javascript:alert(document.cookie="id="+escape("128 and 1=1"));
六、看頁面是否正常,若是正常咱們再提交
javascript:alert(document.cookie="id="+escape("128 and 1=2"));
七、接下來的工做就和get post注入同樣了。