CTF从入门到提升(五) 部分截取函数及bool型盲注相关例题分析

简介: bool型盲注有区别与之前的基于时间的盲注,bool型盲注的页面输入会影响输出。​​我们来看操作理解一下:语句结构id=1 ,我们去做判断的时候是id=1 and 1=1,and 1=1的本质是返回一个true,true可以用1来代替,正常回显。

bool型盲注有区别与之前的基于时间的盲注,bool型盲注的页面输入会影响输出。
​​我们来看操作理解一下:
语句结构id=1 ,我们去做判断的时候是id=1 and 1=1,and 1=1的本质是返回一个true,true可以用1来代替,正常回显。我们很多时候就会去接and=0,0类似于1=2返回是false, false类似于0的作用。
5_1

最后会影响到查询结果的是后面的0和1。

比如说触发查询数据,if触达的sleep执行成功返回SLEEP,执行失败返回0,
5_2

如果映射到bool型盲注这里不再是sleep,返回的结果变成1和0,如果if语句成功执行,它返回结果就是1和1,它不能成功执行返回的就是1和0。可以根据页面的返回内容来判断出到底语句查询是成功还是失败。bool型盲注的逻辑和基于时间的盲注是类似的,只不过判断的方法上是略微有点区别。理解了基于时间的盲注后再回过头来理解bool型盲注其实还应该是比较容易的。

先分享一些场景下截取相关的函数作为知识补充,然后分享一道题。

(说起截取函数在第三节内容中提到过SUBSTRING函数,它是支持这种结构的,)
5_3
5_3_2

mid函数 、ORD()函数 、ASCII()函数
5_4
5_4_2
5_5_3
5_4_5

题目分享:
5_5
5_5_2
5_5_3
5_5_4
5_5_5
5_5_6

连接数据库操作,查询user id是否存在,如果存在这个值,查询出数据是一条就会进入到下面的一个逻辑中去。我们刚才返回的是“ error password”,出现这个结果是因为下面逻辑没有满足:
5_6
5_6_2

针对bool型注入,是不是只要你能够有一个true and fasle,就可以了,可以针对下面这个语句进行注入:
5_7

如果数据中存在id就会走到上面的if else 逻辑里面去,因为我们不知道密码,最终返回的是error password。如果id是不存在的,它返回来就不会是一条是零条,所以它返回的就是一个error user id。

验证一下,我们将user id 改成0
5_8

返回的是 error userid,说明,当userid 是0或1的时候对输出产生了影响,基于这里,我们就已经可以对它做一个盲注。我们来写一下脚本,和之前的逻辑一样引入一个库:
5_request
写脚本思路:
5_9

对它做一个分割和分离,分离的时候我们要看他的过滤机制到底是哪一些。

*- 空格不能用,但可以用内联注释

  • 不能引号就用阿斯克码来代替
    *

5_10
小于127,返回error password,
5_11

大于127,返回 error userid。

5_12

做盲注的时候可以将大于号变成等号,用二分法更快一点。

再举一个放字母的栗子:

5_13

直接复制下链接:

5_14
5_15
请求发出去之后对它做一个判断,定义一个变量,操作如图:
5_16

可以随便设time,out,但不能设太低,会直接报错。这个请求发出去后会有一个response返回来,如果我们去检测response中的内容,

5_17

我们想要的是error password
(content就是response中的页面的信息),针对页面信息我们去做个匹配,使用find进行匹配,找不到就返回-1,找到了就要做个添加,操作如图:
5_18

5_19

找到后对返回值做添加:
5_20

继续等待返回结果:
5_21

以上内容参考安全牛课堂《CTF从入门到提升》

相关文章
|
5月前
|
存储 安全 C语言
c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))
c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))
117 0
|
4月前
|
算法 C语言
【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容
【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容
|
5月前
|
算法 搜索推荐 程序员
第四十九练 请以递归方式实现判断一个字符串是否为回文字符串的
第四十九练 请以递归方式实现判断一个字符串是否为回文字符串的
37 0
|
5月前
|
SQL 数据库
小课堂 -- 时间​​盲注和Bool盲注
小课堂 -- 时间​​盲注和Bool盲注
18 0
|
11月前
|
Web App开发 算法 JavaScript
如何用正则表达式来检测一个数是否是素数
这里还不足以下定论,因为这里还判断不了3n……,其实我们只要在/1后+就可以了。 这个正则表达式可以表示为以下代码。
62 0
|
算法 C++
模拟实现atoi函数(将数字字符串转换为整型)附加leetcode练习题
各位朋友们,大家好啊!今天我为大家分享的知识是如何模拟实现atoi函数。相信大家如果能够理解这个知识,对大家以后的刷题是有帮助的。
如何用简单的方法来判断一个字符串是否是由另一个字符串旋转得来的
如何用简单的方法来判断一个字符串是否是由另一个字符串旋转得来的
|
存储 C语言
【C语言程序设计】知识点汇总3——数组、字符串数组、字符串输入输出相关注意事项
【C语言程序设计】知识点汇总3——数组、字符串数组、字符串输入输出相关注意事项
254 0
【C语言程序设计】知识点汇总3——数组、字符串数组、字符串输入输出相关注意事项