【转】MySQL时间盲注五种延时方法

author:cdxy

PWNHUB 一道盲注题过滤了常规的sleep和benchmark函数,引发对时间盲注中延时方法的思考。

延时函数

延时精确可控,利用环境有限,需要开两个session测试。

SESSION A

SESSION B

通过rpadrepeat构造长字符串,加以计算量大的pattern,通过repeat的参数可以控制延时长短。

PWNHUB-全宇宙最简单的PHP-Writeup

上面代码明显可从id参数注入代码到MySQL UPDATE语句。

从时间盲注的角度解,题中除过滤掉sleepbenchmark两个延时函数之外,并无其他限制。

思路:寻找新的延时函数

想到日常数据开发中自己的SQL中多次因正则消耗计算资源,又想到某次白帽大会上关于正则Dos的议题,然后开始朝RLIKE尝试。

以上代码等同于 sleep(5)

本地测试

Docker起了个PHP 5.6+MySQL,代码copy过去,构建相同环境测试脚本,爆破到正确字符时,测试机会延时10s左右;遇到错误字符会在0.1s以内返回,可以明显区分。

本地测试执行version()的结果:

线上测试

线上就很蛋疼了。首先环境是每5min重启一次,每次只能在重启的瞬间(0.5s)打上10条请求,然后服务器就被用笛卡尔积的同学打挂了。

二分法懒得搞了,在脚本里加了一些纠错机制,线上环境正误尝试的时间差降为0.2s左右,但仍可以区分。

以下爆破结果中,3为正确结果,其余为错误结果。

之后依次执行以下代码get flag(跑了多少个小时我也不知道。。。)

相关推荐: 火种CTF-writeup

暑期有空参加了火种CTF的比赛,比赛总的来说不是很难,但是web部分遇到了很多困难,不过cryto较为简单,全部做出来了。逆向是一如既往的放弃,我要开始好好学逆向了~ 附比赛的wp: 传送门:火种CTF-wp 相关推荐: 利用java复现 ES文件浏览器 CV…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论