开发者社区> 安全牛课堂·牛油果> 正文

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

简介: 本次内容会先介绍一些函数,然后结合一些题目进行讲解。这里的基于时间是指延时。
+关注继续查看

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

​​我们对于盲注最早接触的应该就是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从入门到提升》

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot 实现发送邮件
发送邮件是很多公司必须的业务场景之一。常见的比如预警邮件、入职邮件、报告邮件等等。我们公司就有很多场景需要使用到邮件功能,今天就一起来学习如何使用springboot实现邮件业务场景,掌握邮件业务类的核心逻辑。
6 0
spring security技术分享(四)
用户认证就是判断一个用户的身份是否合法的过程,用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。 认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。
10 0
SpringBoot系列:整合Spring Security
Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication*)和用户授权(Authorization) 两个部分。
7 0
什么是跨域?如何解决?
什么是跨域?如何解决?
5 0
窥探 Netty 源码!Recycler 对象池实现原理剖析
该文所涉及的 netty 源码版本为 4.1.6。
6 0
iOS-底层原理 15:dyld发展史
iOS-底层原理 15:dyld发展史
5 0
SwiftUI—如何使视图充满整个屏幕
SwiftUI—如何使视图充满整个屏幕
4 0
11
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载