CTF从入门到提升(三)基于时间的盲注及部分函数

  1. 云栖社区>
  2. 博客>
  3. 正文

CTF从入门到提升(三)基于时间的盲注及部分函数

安全牛课堂·牛油果 2019-08-20 11:19:36 浏览210
展开阅读全文

本次内容会先介绍一些函数,然后结合一些题目进行讲解。这里的基于时间是指延时。

​​我们对于盲注最早接触的应该就是SLEEP函数, 很多编程语言中都有它。函数的特点就是添加延时功能,我们可以看一下它的一个效果是什么样子的。

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:1分10秒)

举栗子:

在添加了SLEEP函数之后,它的运行结果要是变慢了,而且它的变慢的时间和我们填的设置的时间是接近的,或者说是长于这个时间的。那么就能够验证佐证就是说我们sleep的函数它产生了这个效果:
ctf3_1
3_2

刚刚的演示过程,我们输入的代码和正常的访问产生了差异。( 有延时就说明我们的代码生效了,没有延时就说明没有生效。)
3_3

整张表只有四条数据,id=1,基于逻辑上判断来说,2逻辑前面为真。id=1之后,它后面的逻辑就不管会不会运行SLEEP,但是针对表中的234,id≠1的,它就会去判断后面这个逻辑,这个时候它就会都去做一个延时,运行一个SLEEP(3)。
3_4
3_5

延时数据需要一些配合,当前数据库是sectest,很多时候我们去提供一个约束条件(查询条件)的时候,它如果能查出数据来,其实就是告诉我们表中存在一条数据等于admin,或后面有and的时候,它就能够去触发这个效果,整个词的查比较困难一些。但是我们要是换成一个字母一个字母的去查,就会快很多。这里提到if条件,它其实是一个判断语句,它有三个表达式,可以接收三个参数。
3_6

Expr1是一个判断语句。

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:9分41秒)
3_7

然后这个时候我们再回过头来看一下这些截取函数,做单字母的判断,就是把查询出来的结果做一下拆分。我们来看一下这些函数。第一个就是刚才用SUBSTRING函数,其实它也是个截距函数。比如说我去查一个字符串是ABCDE 5个字母,第一个参数它其实就是代表要被它拆分截取的一个字符串,第二个参数就是position,下一个参数就是length。
3_8

另一个函数SUBSTING这个函数其实也是类似的:

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:15分41秒)
3_9

我们可以看一下例子:

比如说是AAABBBCCC count是去计算关键词出现的次数。

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:18分14秒)

3_10


有的时候方式可以多一些。这里提到既然rlike可以用的话,那么对于正则表达式的一个匹配,还有一个regexp可以对它做一个正则匹配。

3_11

除了if还有很多的方就还有其他方式做语法表达。 case在很多编程语言中都理解成是某种情况,根据case也能做一个触发case,当什么的时候什么条件下,它就会触发一个什么效果。

举几个例子:

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:23分30秒)
3_12
3_13

不想用引号怎么办,那我就要去配合使用阿斯克。把它转成阿斯克码值来做一个判断。

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:27分37秒)
3_14
3_15

反过来阿斯科码只是一个97,对它做一个阿斯科码的转换,第一个返回值用SLEEP函数。 SOPSTR去分割DATABSE,DATABSE是一个全局变量。SUPSTR(1,1)他这时候的返回的结果是一个字母,它的阿斯克码值就应该是115。如果不是115的时候,比如说114,它是秒回,那么通过这样子,就可以判断115就是第一个DATABSE这个变量的第一个字母的阿斯科码值,也可以反推。

除了SLEEP之外还有一些函数,重复执行某个函数。

BENCHMARK
3_16

计算它的处理速度,就是说比如说表达式定义好了之后,这靠的就是它运算次数。

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:30分58秒)
3_17
3_18

延时的目的其实查询语句都是一致的,只不过最后如何让它产生延时,很有可能是CTF题目中需要想要你去考虑的一个问题。

笛卡尔积
3_19

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:34分42秒)
3_20

GET_LOCK

就是说它其实类似于上锁的一个问题,对一个字母上了锁之后,下再去查字符串就会产生一个延时。
3_21

可以看一下get knock

(在这里我做一个演示,如果大家想看可以到安全牛课堂的视频里看动手操作 CTF从入门到提升 课时3:39分)
3_22

构造一个长字符串,然后再做一个匹配,然后就返回得非常慢。所以这里也只是可以有个了解,那我们来看一下看这个效果。
3_23
3_24
3_25

以上动手演示可见:安全牛课堂《CTF从入门到提升》

网友评论

登录后评论
0/500
评论
安全牛课堂·牛油果
+ 关注