HackTheBox-Appointment
字数 1149 2025-08-12 11:34:13
SQL注入漏洞实战教学:HackTheBox-Appointment靶机解析
1. SQL基础概念
1.1 SQL定义
SQL (Structured Query Language) 是结构化查询语言的缩写,是与关系型数据库交互的标准编程语言。
1.2 常见SQL漏洞
最常见的SQL漏洞类型是SQL注入(SQL Injection),攻击者通过构造恶意SQL语句来操纵后端数据库查询。
2. 个人信息安全相关术语
2.1 PII定义
PII (Personally Identifiable Information) 代表个人身份信息,包括能直接或间接识别个人身份的数据。
2.2 OWASP分类
在OWASP Top 10 2021中,SQL注入被归类为:
A03:2021-Injection(注入类漏洞)
3. 靶机环境侦察
3.1 服务扫描
使用nmap扫描目标80端口:
nmap -sV 10.129.41.82 -p 80
发现运行的服务:
Apache httpd 2.4.38 ((Debian))
3.2 端口知识
- HTTP标准端口:80
- HTTPS标准端口:443
4. Web应用基础知识
4.1 目录结构
在Web应用术语中,文件夹被称为directory(目录)
4.2 HTTP状态码
"Not Found"错误对应的响应代码是:
404
5. 渗透测试工具使用
5.1 Gobuster目录扫描
使用Gobuster进行目录爆破时,指定目录扫描而非子域扫描的参数是:
dir
5.2 代码注释符号
在SQL中,常用的注释符号是:
# (井号) 或 -- (双横线)
6. SQL注入实战
6.1 攻击思路
针对登录页面的攻击方法:
- SQL注入
- 暴力破解(brute-forcing) - 基于运气的攻击方式
6.2 注入过程
- 访问目标80端口的Web应用
- 在登录表单尝试构造SQL注入语句:
用户名:admin' and 1=1# 密码:[任意值] - 成功绕过认证,获取flag
6.3 注入原理分析
admin'- 闭合原始查询中的用户名字符串and 1=1- 添加永真条件#- 注释掉查询的剩余部分(如密码检查)
原始SQL可能类似:
SELECT * FROM users WHERE username='[输入的用户名]' AND password='[输入的密码]'
注入后变为:
SELECT * FROM users WHERE username='admin' and 1=1#' AND password='任意值'
由于1=1恒为真,且密码检查被注释,只要admin用户存在就会返回成功。
7. 防御措施
- 使用参数化查询(prepared statements)
- 实施输入验证和过滤
- 最小权限原则配置数据库账户
- 错误信息处理,避免泄露敏感信息
- 使用Web应用防火墙(WAF)
8. 总结
通过本案例我们学习了:
- 基本的SQL注入原理和利用方法
- Web应用安全测试的基本流程
- 常用工具和命令的使用
- 相关的安全术语和概念
SQL注入作为最古老也最危险的Web漏洞之一,理解其原理和防御方法对开发和安全人员都至关重要。