目录
1、Cookie注入
SQL注入的本质是用户输入的数据会被当作代码执行;
什么是Cookie?
Cookie就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果获取了管理员的Cookie,你可以无需密码直接登录管理员账号;
Cookie注入简介
数据库有很多种类,常见的数据库有Access、Mysql、msSQL(sql server)、Oracle,前面我们学的联合查询和盲注那些语句都是Mysql的内容;
POST注入和HEAD注入其实就是传参方式不同来分类,比如说POST注入的GET传参和POST传参 就是根据传参方式不同来分类的,POST注入不存在数据库限制,Cookie注入其实和Post、Head注入一样都是属于特殊的传参方式产生的注入,主要介绍和Access数据库有关的Cookie注入;
Cookie注入可以在Oracle数据库或者其他数据库做,因为Cookie注入跟数据库是没有关联的,它只和传参方式有关,其他的一概没有关系;
Cookie和注入有什么关系?
当动态脚本语言存在超全局变量可以获取多种传参方式,比如说开发人员在做开发的时候接受多种传参,像php中的$_REQUEST[]可以获取POST、GET、Cookie传参,我们写一个这样的SQL语句:
select * from news where id=$_REQUEST['id']
从上面这条语句中我们可以知道这里存在SQL注入,id只传入了数据,并没有经过任何的处理和过滤,我们只要在后面拼接union select,就可以得到我们想要的信息;
比如说现在我们遇到一种情况,这个网站会对GET、POST数据进行检测,但是不会对Cookie做检测,这个时候就可以去获取信息和数据了;
举个例子,打开Phpstudy,先切换到低版本;
启动之后,打开网站根目录;
在www文件目录下新建一个php文件,自定义命名,这里命名为1.php;
输入代码;
<?php
$id=$_REQUEST['id'];
$sql="select*from news where id='$id'";
echo $sql;
?>
打开My HomePage;
打开My HomePage后会看到这样的页面;
将index.php修改为我们的文件名1.php;
回车后,会出现下面这样的语句;
我们随便传个1,它就会把数据拼接过来;
我们在这里写个单引号,就会出现魔术引号;
我们之前有学过,魔术引号一定要用宽字节来绕过,它支持GBK编码,如果说这个地方我们不用GBK编码能否绕过呢?
前面我们知道魔术引号会对字符串的GET和POST请求进行一个处理,那我们来想一个问题,$_REQUEST会接受Cookie的传参,那我们试试看如果给它改一个Cookie,看看会不会对我们的传参进行一个魔术引号的拦截;
[注:本地搭建的情况下由于代码和环境的限制,导致SQL查询语句只能在前端执行,并没有将cookie数据传入后端,所以数据库才没有返回默认的cookie(一句话理解:前端没有链接数据库,只是在前端输出cookie的内容,不能cookie存储,所以页面没有默认cookie)]
从上面这张图, 可以到依旧是做了转移符的执行,魔术引号在宽字节注入的情况下,无论是POST传参还是GET传参或者Cookie传参,只要用了$_REQUEST那它就会对其进行防御;
如果说我们直接写$id,会是什么情况;
<?php
$id=$_REQUEST['id'];
echo $id;
?>
可以看到上面的传参是1,但下面显示的是9,是因为我的Cookie和刚才输入的数据(id,9)是一起传参的;
上面输入的是1,但是下面显示的是9,是因为Cookie传参会比GET传参的优先级更高;
Cookie的核心
Cookie的核心在于POST和GET被拦截的时候,我们可以尝试使用Cookie;
2、如何设置Cookie?
方法一:依靠浏览器进行设置
首先,在网页里打开开发人员工具;
看到这个页面之后,在应用程序里找到Cookie,然后再点击Cookie的值;
然后就会出现这样的界面,你可以在这里面添加或者删除Cookie;
我们添加一个Cookie看看;
刷新之后页面显示的就是100;
也可以写点其他的东西;
也一样会显示;
这是一个方法,依靠浏览器去设置;
方法二:抓包直接修改
我们可以利用Burp数据包进行直接修改;
Cookie其实是在数据包的请求头里面,它会被写在里面一起上传,所以我们也可以通过抓包的方法将Cookie拦截下来;
举个例子,这是我自己添加的Cookie,我们现在对它进行抓包;
抓到的包;
现在我们将Cookie改一下;
修改好后,再点击Forward;
然后再回到我们网页这里,就会发现显示的是Hello;
利用Burp数据包进行直接修改,这也是一个比较好用的方法;
方法三:个别浏览器插件也可以设置Cookie
比如这个插件,就可以设置Cookie;
安装方式很简单,只需要点击网页右上角拼图的图标,选中管理扩展程序;
就会看到这样的页面;
直接将文件夹里的插件拖进去即可;