Blind SQL(盲注)是SQL注入攻击的其中一种。在sql注入过程中,sql语句执行后数据不会回显到前端页面,此时,我们需要利用一些 *** 进行判断或者尝试,这个过程称之为盲注。
本文涉及知识点实操练习:MySQL盲注(本实验讲解了MySQL注入中,3种盲注方式:基于布尔的盲注、基于时间的盲注、基于报错的盲注。通过学习本实验,能了解盲注原理。)
IF(expr1,expr2,expr3)
若为true,则返回,为false则返回
ASCII(str)
返回字符串最左面字符的ASCII值
ORD(str)
返回字符串之一个字符的ASCII值
CHAR(int)
将ASCII码值转换成字符
MID(str,pos,len)
从位置开始,截取字符串共个长度的字符
与SUBSTR(str,pos,len) 效果相同
LEFT(str,len)
返回字符串左边部分共个字符
SLEEP(duration)
是休眠的时长,以秒为单位,也可以是小数
REGEXP
正则表达式,用来匹配文本的特殊的串(字符集)
其它
根据注入点的输入,页面只返回True和False两种类型页面。利用页面返回不同,逐个猜解数据。
据此可知数据库名的长度为
通过执行时间的长短来判断是否执行成功,也就是时间延迟注入。
据此可知数据库名的之一个字符为
以下2道题目:flag在flag表的flag字段
在本地搭建靶机,用post传参,变量接收
基于运行错误的布尔盲注即能够通过sql语句的语法、语义分析,但运行时报错。
我们可以将其作为IF(expr1,expr2,expr3)的,当为true时,返回,页面正常,而为false时,则会执行,此时因为运行错误而页面无法正常显示。
ST_GeomFromText(character-string[, srid]) 是根据字符串表示构造几何的 *** ,即:
ST_X(point):该 *** 是获取点的x坐标,它操作的对象是一个点,即:
但当操作对象不是点时,运行会报错,却能够通过sql的检查,所以可以用来构造true和false两种情况下出现不同的页面
P.s.
ST_GeomFromText 、 ST_MPointFromText 是两个可以从文本中解析Spatial function的函数。
需要注意的是 ST_GeomFromText 针对的是 POINT() 函 数, ST_MPointFromText 针对的是 MULTIPOINT() 函数的。
其他可用的函数:
如果题目过滤了,可以尝试用和,但MySQL在5.7.6版本之后就弃用了。
Name | Description |
---|---|
(deprecated 5.7.6) | Return X coordinate of Point |
(deprecated 5.7.6) | Return geometry from WKT |
当输入1、2、3等数字时,页面返回
而当输入被过滤的关键字时,网页返回
由此可以测试一些被过滤的关键字有:
、、、、、、、、、、、、、
然而在不被ban掉的情况下,网页只能返回一种页面,无法进行平常的数字型盲注。
而像,因为无法通过sql语句的检查,所以页面无法正常显示,更别说了。
此时可以考虑用基于运行错误的布尔盲注,语法、语义上能够通过sql的检查,但如果执行到该语句却会运行错误,这样便能够构造true和false两种情况了。
用if来进行盲注,被过滤了,用十六进制绕过。
此时页面返回。题目说flag在flag表的flag字段,用left()截取之一个字符进行判断,和可以用代替。
构造payload:
此时页面仍然返回,可以知道flag的之一个字符是char(102),也就是
而第二个字符是char(108),也就是字符
用python写个脚本
由于在这里过滤了,所以以开头的函数会被ban,无法使用。
同时又过滤了,所以无法通过时间休眠来延迟时间,也就没法用sleep来进行时间盲注。
但我们可以通过sql语句来执行一个运算时间很长很长的语句,以此来作为时间延迟,也就是说用if来判断flag的字符,如果正确则执行一个需要很长运算时间的语句,否则返回0。
所以之后用python写脚本的时候,设定一个超时时间,在设定时间内没有返回内容即字符正确,这样便能进行时间盲注了。
在此之前先了解几个函数
rpad(str,len,padstr)
对字符串进行右填充,用填充至长度为个字符
concat(str1,str2,...)
连接多个字符串为一个字符串
repeat(str,count)
返回字符串重复次后的字符串
构造payload:
也就是说如果flag的之一个字符为的话,则会执行下面这句语句:
会填充为5000000个,会构造成一个很长的字符串,与字符串去作正则匹配,通过巨大的运算量来延时。
这样做的话服务器可能会崩
由于题目过滤了,所以用十六进制代替
以下两种图片用get传参测试时间延迟效果
猜中flag的之一个字符时:
而如果猜之一个字符为,则为false,if返回0
所以我们可以通过大量的运算时间做延迟,进行时间盲注。
但服务器进程在接到客户端传送过来的SQL语句时,不会直接去数据库查询。服务器进程把这个SQL语句的字符转化为ASCII等效数字码,接着这个ASCII码被传递给一个HASH函数,并返回一个hash值,然后服务器进程将到shared pool中的library cache(高速缓存)中去查找是否存在相同的hash值。如果存在,服务器进程将使用这条语句已高速缓存在SHARED POOL的library cache中的已分析过的版本来执行,省去后续的解析工作,这便是软解析。
所以多次查询后将不再延迟,所以对rpad()的需要每次自减1
脚本来自Gqleung(http://www.plasf.cn)
timeout:设定超时时间,秒为单位在设定时间内没有返回内容则返回一个timeout异常
若是3秒内没有返回内容则返回timeout异常,即字符正确,打印输出
香槟(Champagne),中国人对它如此熟悉,但又如此陌生。之所以说陌生是因为国人还没搞清楚到底什么才能谓之香槟。那么,红酒百科全书就来说说这人见人爱、花见花开、但又常被误解的香槟吧。 1、根...
这是真正的黑客吗? 黑客是程序员的子集。 程序员在解决那些原先已经被解决过的问题。而黑客通常是在尝试解决一些新的问题。 程序员是一种职业,而黑客是一种兴趣。 程序员的工作有很多限制,而黑客可以尽情发挥...
怎样查询别人手机通话详单又不让对方知道?没有服务密码可以获取吗?专业盗取微信密码,开房查询,通话记录查询,查询微信聊天记录,非常靠谱!根据优先级4象限评估,此功能属于用户体验的优化,属于低频非刚性需求...
德云社现在的名声是越来越大,郭德纲座下弟子也是非常的多,郭德纲还给徒弟们赐字“云鹤九霄、龙腾四海”。但相信大家也发现了,郭德纲的儿子不在赐的这些字里面,郭麒麟没有拜自己父亲为师是为什么呢?郭麒麟为什么...
本文导读目录: 1、求黑客帝国系列百度云 高清 2、黑客帝国3:矩阵革命高清完整版下载地址 3、黑客帝国3:矩阵革命高清完整版下载 4、求 黑客帝国3:矩阵革命 百度网盘免费资源链接,谢谢...
win10电脑时间同步出错怎么解决?现在很多朋友都已经不再使用手表这种东西,手表也已经陆续退出时代的大舞台了,越来越多的朋友开始看电脑时间来判断接下来的时间要做什么事情,但有时用户会遇到电脑时间明显跟...