【SQL注入】延时盲注

sleep(n) ​: 核心延时函数。使数据库程序暂停 n秒。

if(condition, true_expr, false_expr) ​: 条件判断函数。如果 condition为真,执行 true_expr,否则执行 false_expr。​​用于将延时与判断条件绑定​​。

mid(a, b, c) ​: 字符串截取函数。从字符串 a的第 b位开始,截取 c个字符长度的子串。

通过观察网页响应时间是否延迟了5秒,从而判断出数据库名字的第一个字母不是 'g',这里返回5,不是g

substr(a, b, c) ​: 功能同 mid(a, b, c),字符串截取函数。

​**left(a, b)​** : 字符串截取函数。从字符串 a​左侧​ 截取前 b

database()​: 返回当前数据库的名称。

length(a) ​: 返回字符串 a的长度。

攻击原理:

通过组合上述函数,构造一个条件判断(如 if(ascii(substr(database(),1,1))=100, sleep(5), 0)),如果条件为真,则触发延时,从而根据页面的响应时间来判断猜测的数据是否正确。这是一种"盲注"手段,在无法直接看到查询结果时使用。

如果当前数据库名的第一个字母是 't',那么就让数据库睡眠0秒(不延迟);否则,就睡眠5秒(产生明显延迟)。

?id=1 and sleep(if(mid(database(),1,1)='t',0,5))

在SQL注入过程中,推荐使用ASCII码进行判断。​​​

1.防止引号转义​ ​:可以避免因单引号 '或双引号 "被应用程序转义或过滤而导致的注入失败,提高攻击的成功率和可靠性。

2.方便工具使用​ ​:为后续使用sqlmap等自动化注入工具提供便利,这些工具通常采用ASCII码值进行盲注判断,手动测试时采用同样方法可以保持一致。

从当前数据库中查询第一张表的表名,并取出其第一个字符。如果这个字符的ASCII码等于116(即字符't'),那么就让数据库睡眠2秒;否则,就不睡眠。

select * from t1 where id=1 and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=116,sleep(2),0);

相关推荐
X7x55 分钟前
零信任架构:重塑数字时代安全边界的战略转型
网络安全·网络攻击模型·安全威胁分析·安全架构·零信任架构
拾贰_C10 分钟前
【python | installation 】python 安装 | Windows | 命令使用
linux·数据库·ubuntu
贺今宵21 分钟前
Vue 3 + Capacitor 使用jeep-sqlite,web端使用本地sqlite数据库
前端·数据库·vue.js·sqlite·web
列星随旋26 分钟前
MySQL面经整理
数据库·mysql
AllData公司负责人26 分钟前
大模型赋能AllData数据中台,系列升级|通过联合智谱大模型与Chat2DB开源项目,建设Text2SQL生产场景全新体验的数据源平台!
数据库·人工智能·text2sql·数据中台·数据源·chat2db·智谱大模型
锐速网络1 小时前
CDN加速服务怎么选?主流CDN加速平台横向对比(2026实战版)
网络安全·网络加速·高防cdn·cdn选型·cdn对比·企业级cdn
minji...1 小时前
MySQL数据库 (四) MySQL的数据类型,tinyint,float,decimal,枚举enum和集合set
数据库·mysql·tinyint·enum·decimal·varchar·bit
阿演1 小时前
DataDjinn 新版本更新:国产数据库支持、连接树体验、AI 查询和表格编辑继续增强
数据库·人工智能·ai·ai编程
一只fish2 小时前
Oracle官方文档翻译《Database Concepts 26ai》附录-术语表
数据库·oracle
一只fish2 小时前
Oracle官方文档翻译《Database Concepts 26ai》第23章-数据库开发者概念
数据库·oracle