从偶然的机会发现一个mysql特性到wooyun waf绕过题
从偶然的机会发现一个mysql特性到wooyun waf绕过题
MayIKissYou | 2015-06-19 12:00
最近在测试的时候,偶然的机会发现了一个mysql的特性,
为啥是偶然的机会呢。。。。。
一次测试的过程中我在mysql的console下做了如下的操作:
看出些什么了么?
我当时发现报错的时候例如-+{等符号 报错的时候提示的是''(双引号里没东西),但是如select后面添加1 a等内容的时候报的是
selecta,select1等等。
想到共性了么,-+{等等内容是能够直接添加到select后面的,知其那那个sql总结的帖子里有,
例如
select-1;
select+1;
select{x 1};
而select后面直接跟1 a的时候就不可以直接报错了。
再回过头去看那张图的时候发现select后面直接跟.的时候尽然也是提示的'',此时就开始怀疑select后面也应该是能够直接跟.号的。
因此我们现在确定了select.的形式,此时想要做的是怎么闭合这个语句,使得该语句能够正常的执行。
又开始手工能够测试:
测试了多少payload,我也不记得了,最后当输入以下内容的时候,让我小happy了一下:
竟然提示的是
Unknown table '1' in field list
然后我就做了如下的操作:
看到没竟然成功了使用的语句是:
select.``.schema_name from information_schema.schemata;
ps.我只能说运气不错。
就这样证明了select后面直接跟.也是可以的。
---------------------------------------------------------华丽的分割线----------------------------
wooyun waf绕过
这是痛苦的经历,测试的过程中感觉到和往常的waf有点不同,感觉每当我拼凑出来的bypass语句能够执行的时候就出现了bad hacker。
由于我是大晚上12点开始弄得,发现已经有答案了,测试了1个多小时没有结果之后就去看了下write up。
我擦勒竟然完全和自己的做法不在同一频道,完全没想到这位牛使用的方法。
整理下思路吧
1:输入'报错了,一个like的查询语句,试试了初步判断里面没有内容,然后没有回显,而sql报错的时候不是mysql自己的报错,基本不能使用union,和报错注入,考虑时间盲注了。
ps.自己之前一直在和那个union的过滤较劲,关键是没摸出到底是啥规则,好吧今天来的时候小v说不是基于规则的,我擦勒有点累蹦。
2:由于基于时间盲住了因此就会有类似这样的模式:
if(你这样,睡几秒,不睡)
貌似and这种玩意都不能用,于是就直接使用运算符号吧:
http://rile.gou.gg/search?query=1%27>(select[])
在这里的时候输入各种玩意都返回报错,后来试了下select.貌似成功了。
感觉应该有戏了,反反复复拼凑下得到了如下的payload,哈哈这里我偷懒没有去自己爆数据了直接拿了那位大牛爆出的表名,最终的payload
http://rile.gou.gg/search?query=1%27>(select.``.schema_name from (select.``.schema_name,if(ascii(mid((select * from test.flag),1,1))=102,(benchmark(5000000,sha(1))),1) from information_schema.schemata)x)%23
用lijiejie的脚本改一下,然后直接报flag:
结果少了几位 没爆出来,延时不稳定没= =
ps.好吧 被恶心到了 现在已经困如*了
从偶然的机会发现一个mysql特性到wooyun waf绕过题的更多相关文章
- PJzhang:我发现一个有两个答案的数独题
猫宁!!! 最近做数独题,发现了一个答案不唯一的数独,之前对此类数独有所耳闻,但是没有亲手发现,碰巧发现一个,很是欣喜. 下面展示了两个答案 第一个 第二个 绿色标签是答案 ...
- 学习笔记:发现一个IE版本判断的好方法
web开发就不得不面对浏览器兼容性问题,特别是IE的兼容问题.在前端代码中经常要处理一些兼容格式,为了解决这个问题网上找了找识别浏览器版本的方法. 常规js方法 找到一个方法,还不错,可以识别出各 ...
- MySQL · 特性分析 · 优化器 MRR & BKA【转】
MySQL · 特性分析 · 优化器 MRR & BKA 上一篇文章咱们对 ICP 进行了一次全面的分析,本篇文章小编继续为大家分析优化器的另外两个选项: MRR & batched_ ...
- 【JMeter】JMeter完成一个MySql压力测试
jmeter也可以用来做数据库的压力测试,并且兼容各种数据库类型,只需要更改对应的数据库驱动类和url.以下为整理到的数据库驱动类对应url.并且给出一个mysql数据库select的简单应用.如下: ...
- MySQL学习笔记之中的一个 MySQL入门
本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会非常费劲,在总结的时候可能很多其它的 ...
- 51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本
从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译 ...
- linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的
发现一个比ack更快更好用的: https://github.com/ggreer/the_silver_searcher , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...
- (转)一个MySQL 5.7 分区表性能下降的案例分析
一个MySQL 5.7 分区表性能下降的案例分析 原文:http://www.talkwithtrend.com/Article/216803 前言 希望通过本文,使MySQL5.7.18的使用者知晓 ...
- 性能是.NET Core的一个关键特性
关键要点1).NET Core是跨平台的,可运行在Windows.Linux.Mac OS X和更多平台上:与.NET相比,发布周期要短得多.大多数.NET Core都是通过NuGet软件包交付的,可 ...
随机推荐
- LNMP平台搭建---MySQL安装篇
在前两篇中,安装了一个基本的Web服务器,但是只能提供静态网页查看,要做成动态网站,就必须要数据库或其他编程语言支持了,这里先介绍MySQL数据库的安装. MySQL是一个开源的数据库,在互联网行业应 ...
- thinkphp中volist标签
volist标签 volist标签主要用于在模板中循环输出数据集或者多维数组 volist(name,id,offset,length,key,mod,empty) name(必须):要输出的数据模型 ...
- GeoJSON格式规范说明
GeoJSON格式规范说明 1.简介 GeoJSON是一种对各种地理数据结构进行编码的格式.GeoJSON对象可以表示几何.特征或者特征集合.GeoJSON支持下面几何类型:点.线.面.多点.多线.多 ...
- 【JavaScript兼容】关于IE8及以下无法通过getElementsByClassName()方法获得元素的解决方法
try{ var a = document.getElementsByClassName("cla"); console.log(a); }catch(ex){ var array ...
- python中获取指定目录下所有文件名列表的程序
http://blog.csdn.net/rumswell/article/details/9818001 # -*- coding: utf-8 -*-#~ #------------------- ...
- Android -- FlipViewController的使用(jar文件)
1. 此控件的作用 类似于翻书一样,可以上下翻页的控件, 2. 效果图
- linux errno使用
errno详解 http://blog.csdn.net/wang_517766334/article/details/7561495 #include <errno.h> 就可以直接打印 ...
- 使用TFHelp解析Html
似乎是第一次使用TFHelp解析Html,也是第一次解析Html遇到挺多的难题,现在这里简单的总结一下,慢慢补充TFHelp的使用! https://github.com/topfunky/hpple ...
- Java_动态重新加载Class总结
在此记载Java动态重新加载Class的点点滴滴,实现之前也在网上看了很多文章,但发现不是很清晰,后来发现总结,看源码实现还是最靠谱. 直接上代码: package com.lkb.autoCode. ...
- js模块化方案【转】
(function(){ var CENTER = new EvtCenter(); var Loaded={}; var Modules={}; function loadScript(name,u ...