转自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注入同样了。