0x00:前言
Cookie的定义是这样的:Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。通常被用来辨别用户身份、进行session跟踪,最典型的应用就是保存用户的账号和密码用来自动登录网站和电子商务网站中的“购物车”。
Cookie注入简单来说就是利用Cookie而发起的注入攻击。从本质上来讲,Cookie注入与传统的SQL注入并无不同,两者都是针对数据库的注入,只是表现形式上略有不同罢了。
要想深入了解Cookie注入的成因,必须要了解ASP脚本中的request对象。它被用于从用户那里获取信息。Request对象的使用方法一般是这样的:request.[集合名称](参数名称),比如获取从表单中提交的数据时可以这样写:request.form("参数名称"),但ASP中规定也可以省略集合名称,直接用这样的方式获取数据:request("参数名称"),当使用这样的方式获取数据时,ASP规定是按QueryString、Form、Cookies、ServerVariables的顺序来获取数据的。这样,当我们使用request("参数名称")方式获取客户端提交的数据,并且没有对使用request.cookies("参数名称")方式提交的数据进行过滤时,Cookie注入就产生了。
————————————————
上面抄别人的~
我的理解:get和post直接注入无法进行,把参数通过cookie的形式传递。有的URL没有GET参数,但是页面返回正常
0x01:发现cookie注入
一:
1.寻找形如“.asp?id=xx”类的带参数的URL。
2.去掉“id=xx”查看页面显示是否正常,如果不正常,说明参数在数据传递中是直接起作用的。
3.清空IE浏览器(其他浏览器没有貌似效果)地址栏,输入“javascript:alert(document.cookie="id="+escape("xx"));”,按Enter键后弹出一个对话框,内容是“id=xx”,之后,你刷新一个网页,如果正常显示,表示是用Request("ID") 这样的格式收集数据~~~~,这种格式就可以试Cookies注入了
4.重复上面的步骤,将常规SQL注入中的判断语句带入上面的URL:“javascript:alert(document.cookie="id="+escape("xx and 1=1"));” “javascript:alert(document.cookie="id="+escape("xx and 1=2"));”。和常规SQL注入一样,如果分别返回正常和不正常页面,则说明该应用存在注入漏洞,并可以进行cookie注入。
5.使用常规注入语句进行注入即可。
二:
1.确定要尝试cookie注入后
2.将URL中的参数去掉 变成 http://xxxxxxxx/xxx.asp
在cookie中添加变量 id
3.之后更改cookie id的值即可
16 and 1=1
16 and 1=2
16 order by 10
.....
注:这里的cookie的值 要进行URL编码
三:
sqlmap cookie注入
sqlmap.py -u "http://xxxxxxxxxxx/shownews.asp" --cookie "id=27" --table --level 2