两种CTF中特殊盲注的总结

访客4年前关于黑客接单927

前言

Blind SQL(盲注)是SQL注入攻击的其中一种。在sql注入过程中,sql语句执行后数据不会回显到前端页面,此时,我们需要利用一些 *** 进行判断或者尝试,这个过程称之为盲注。

本文涉及知识点实操练习:MySQL盲注(本实验讲解了MySQL注入中,3种盲注方式:基于布尔的盲注、基于时间的盲注、基于报错的盲注。通过学习本实验,能了解盲注原理。)

SQL盲注基本知识

常用基本函数

  • 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版本之后就弃用了。

NameDescription
(deprecated 5.7.6)Return X coordinate of Point
(deprecated 5.7.6)Return geometry from WKT

当输入1、2、3等数字时,页面返回

输入1、2、3等数字

而当输入被过滤的关键字时,网页返回

输入被过滤的关键字

由此可以测试一些被过滤的关键字有:

、、、、、、、、、、、、、

然而在不被ban掉的情况下,网页只能返回一种页面,无法进行平常的数字型盲注。

而像,因为无法通过sql语句的检查,所以页面无法正常显示,更别说了。

此时可以考虑用基于运行错误的布尔盲注,语法、语义上能够通过sql的检查,但如果执行到该语句却会运行错误,这样便能够构造true和false两种情况了。

用if来进行盲注,被过滤了,用十六进制绕过。

此时页面返回。题目说flag在flag表的flag字段,用left()截取之一个字符进行判断,和可以用代替。

构造payload:

此时页面仍然返回,可以知道flag的之一个字符是char(102),也就是

而第二个字符是char(108),也就是字符

用python写个脚本

用python写个脚本

基于巨大运算时间的时间盲注

由于在这里过滤了,所以以开头的函数会被ban,无法使用。

同时又过滤了,所以无法通过时间休眠来延迟时间,也就没法用sleep来进行时间盲注。

但我们可以通过sql语句来执行一个运算时间很长很长的语句,以此来作为时间延迟,也就是说用if来判断flag的字符,如果正确则执行一个需要很长运算时间的语句,否则返回0。

所以之后用python写脚本的时候,设定一个超时时间,在设定时间内没有返回内容即字符正确,这样便能进行时间盲注了。

在此之前先了解几个函数

  • rpad(str,len,padstr)

对字符串进行右填充,用填充至长度为个字符

  • concat(str1,str2,...)

连接多个字符串为一个字符串

  • repeat(str,count)

返回字符串重复次后的字符串

构造payload:

也就是说如果flag的之一个字符为的话,则会执行下面这句语句:

会填充为5000000个,会构造成一个很长的字符串,与字符串去作正则匹配,通过巨大的运算量来延时。

这样做的话服务器可能会崩

由于题目过滤了,所以用十六进制代替

以下两种图片用get传参测试时间延迟效果

猜中flag的之一个字符时:

猜中flag的第一个字符时

而如果猜之一个字符为,则为false,if返回0

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异常,即字符正确,打印输出

打印输出

相关文章

无期徒刑一般是多少年(无期徒刑和终身监禁一样吗?)

无期徒刑一般是多少年(无期徒刑和终身监禁一样吗?)

社会影响较大的刑事案件,一般审判结果都会向社会公开,我们也经常能从新闻资讯中听到“判处无期徒刑”和“判处终身监禁”,这两者是不同的吗?大律师网小编今天给大家带来“无期徒刑”相关内容,那么,2020年无...

小型咖啡机尺寸是多少,家用咖啡机买多大的!

小型咖啡机尺寸是多少,家用咖啡机买多大的!

咖啡香醇又提神,不少人都喜欢。不过赶上出门在外,拎着咖啡机满世界跑也不现实。今天果小妞就给大家介绍一个,让你随身携带的咖啡机——Tripresso 便携胶囊咖啡机。 水杯大小可以随身携带 胶...

如何远程监控同步别人的微信

一直以来,无论是对远程还是对监控,人们都是采用一种怀疑态度。但是不得不说,很多东西我们的确是可以通过远程去操作的。前阵子小编的电脑坏掉了,然后就通过师傅远程去操作自己的电脑,然后完成修复的。所以,对于...

如何找黑客黑别人电脑(黑客怎么黑电脑)

黑客的定义提起黑客,总是那么神秘莫测。在人们眼中,黑客是一群聪明绝顶,精力旺盛的年轻人,一门心思地破译各种密码,以便偷偷地、未经允许地打入政府、企业。 黑客是入侵别人电脑的方法有9种。1、获取口令这...

“农民院士”托管中心的产业致富经

  央广网北京11月26日消息(记者李腾飞 朱敏)据中央广播电视总台中国之声《新闻纵横》报道,党的十九届五中全会通过的《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》从...

那里有查询他人开房记录

  自年分肺炎疫情产生至今,很多地区都打开了入关限定。如今,伴随着肺炎疫情的平稳发展趋势,马来西亚将于11月6日起清除对我国大陆游客的入关限定。   马来西亚中国民航总局29日公布,从11月6日起将...