什么是cookie注入


cookie注入的原理是:就是修改cookie的值进行注入

cookie注入其原理也和平时的注入一样,只不过注入参数换成了cookie

要进行cookie注入,我们首先就要修改cookie,这里就需要使用到Javascript语言了。另外cookie注入的形成有两个必须条件:

条件1是:程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤。

条件2是:在条件1的基础上还需要程序对提交数据获取方式是直接request("xxx")的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数也可以是cookie里面的参数这里没有做筛选,之后的原理就像我们的sql注入一样了。

源码分析


if(isset($_POST['uname']) && isset($_POST['passwd']))
    
        $uname = check_input($_POST['uname']);
        $passwd = check_input($_POST['passwd']);
        
        $sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
        $result1 = mysql_query($sql);
        $row1 = mysql_fetch_array($result1);
        $cookee = $row1['username'];

从 cookie 中读取的 uname 参数值 并直接拼接到了 SQL 语句中了,这就导致了注入点的产生,并且还输出了查询信息,所以这里也是可以进行联合查询注入的。


Less-20

我们通过修改cookie的值,在里面插入sql语句,就会被执行。
cookie注入

总结


extractvalue()函数

常用于报错注入

此函数从目标XML中返回包含所查询值的字符串 语法:extractvalue(XML_document,xpath_string) 第一个参数:string格式,为XML文档对象的名称 第二个参数:xpath_string(xpath格式的字符串) select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));

extractvalue使用时当xpath_string格式出现错误,mysql则会爆出xpath语法错误(xpath syntax)

select user,password from users where user_id=1 and (extractvalue(1,0x7e));

由于0x7e就是~不属于xpath语法格式,因此报出xpath语法错误。

怎么防范cookie注入

使用seeion代替cookie
GET、POST方式提交的数据进行过滤
避免使用request("id")方式获取客户端提交的数据

最后修改:2021 年 08 月 08 日 05 : 10 PM
如果觉得我的文章对你有用,请随意赞赏