墨者:SQL注入下的文章汇总
墨者学院:有关SQL注入的文章汇总🚀
1. 前言📄
本文记录了墨者学院「WEB安全 → SQL注入」类别下绝大多数靶场的详细解析。截至发稿时,该类别共有23个靶场,其中已完成20个靶场的测试分析。
特别说明:
有3个靶场未包含在本文中(原因:墨币不足 😅),它们分别是:
🔗 SQL注入漏洞测试(delete注入):https://www.mozhe.cn/bug/detail/L1FDSVJWcm9WUFkzZGs1azh0T09pQT09bW96aGUmozhe
🔗 SQL手工注入漏洞测试(Sybase数据库):https://www.mozhe.cn/bug/detail/b0R2Q0VJL3lnellUMjJoUmRsK1FsZz09bW96aGUmozhe
🔗WordPress插件漏洞分析溯源:https://www.mozhe.cn/bug/detail/S0JTL0F4RE1sY2hGdHdwcUJ6aUFCQT09bW96aGUmozhe
(即将转战sqli-labs
靶场)
2. 已解决靶场的文章汇总🔍
我的标题都是以墨者:
开头,下面是我整理出的文章内容地址,方便大家快速翻阅跳转。
🔗墨者:X-Forwarded-For注入漏洞实战
https://blog.csdn.net/qq_62000508/article/details/149694143?spm=1011.2415.3001.5331
🔗墨者:SQL注入漏洞测试(登录绕过)
https://blog.csdn.net/qq_62000508/article/details/149692835?spm=1011.2415.3001.5331
🔗墨者:SQL过滤字符后手工绕过漏洞测试(万能口令)
https://blog.csdn.net/qq_62000508/article/details/149725190?spm=1011.2415.3001.5331
🔗墨者:SQL注入漏洞测试(布尔盲注)
https://blog.csdn.net/qq_62000508/article/details/149697583?spm=1011.2415.3001.5331
🔗墨者:SQL注入漏洞测试(报错盲注)
https://blog.csdn.net/qq_62000508/article/details/149710986?spm=1011.2415.3001.5331
🔗墨者:SQL注入漏洞测试(时间盲注)
https://blog.csdn.net/qq_62000508/article/details/149698708?spm=1011.2415.3001.5331
🔗墨者:SQL注入漏洞测试(宽字节)
https://blog.csdn.net/qq_62000508/article/details/149729310?spm=1011.2415.3001.5331
🔗墨者:SQL注入漏洞测试(HTTP头注入)
https://blog.csdn.net/qq_62000508/article/details/149729310?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(MySQL数据库)
https://blog.csdn.net/qq_62000508/article/details/149692335?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(Oracle数据库)
https://blog.csdn.net/qq_62000508/article/details/149674585?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(PostgreSQL数据库)(第1:手工注入,第2:sqlmap爆破)
https://blog.csdn.net/qq_62000508/article/details/149670963?spm=1011.2415.3001.5331
https://blog.csdn.net/qq_62000508/article/details/149651578?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(MongoDB数据库)
https://blog.csdn.net/qq_62000508/article/details/149691072?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(Db2数据库)
https://blog.csdn.net/qq_62000508/article/details/149675601?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(SQLite数据库)
https://blog.csdn.net/qq_62000508/article/details/149747992?spm=1011.2415.3001.5331
🔗墨者:XPath注入漏洞实战
https://blog.csdn.net/qq_62000508/article/details/149751049?spm=1011.2415.3001.5331
🔗墨者:SQL注入实战-MySQL
https://blog.csdn.net/qq_62000508/article/details/149722625?spm=1011.2415.3001.5331
🔗墨者:SQL手工注入漏洞测试(MySQL数据库-字符型)
https://blog.csdn.net/qq_62000508/article/details/149719140?spm=1011.2415.3001.5331
🔗墨者:SQL过滤字符后手工注入漏洞测试(第1题)
https://blog.csdn.net/qq_62000508/article/details/149745608?spm=1011.2415.3001.5331
🔗墨者:SQL过滤字符后手工注入漏洞测试(第2题)
https://blog.csdn.net/qq_62000508/article/details/149752515?spm=1011.2415.3001.5331
🔗墨者:SQL过滤字符后手工注入漏洞测试(第3题)
https://blog.csdn.net/qq_62000508/article/details/149749698?spm=1011.2415.3001.5331
3. 目前整理到的点✨
其实也不是什么重点,也就是一些SQL注入的入门点
,关注点
等等。
3.1. 为什么使用order by 查询字段数?⭐
基础语法原理:
order by N -- N为数字时表示按第n列排序
当n超过实际列数时,数据库会报错:
Unknown column '4' in 'order clause' -- 实际只有3列时
探测方法对比
探测方法 | 适用场景 | 隐蔽性 | 成功率 |
---|---|---|---|
order by | 所有SQL数据库 | ★★★★☆ | 95% |
union select | 需回显位 | ★★☆☆☆ | 80% |
报错函数 | 需开启错误显示 | ★☆☆☆☆ | 60% |
布尔盲注 | 无回显场景 | ★★★★☆ | 85% |
3.2 为什么常用id=-1 与 union select 搭配?⭐
是因为union select
要求前一个查询返回空,才能显示我们注入的数据:
SELECT * FROM articles WHERE id = -1 UNION SELECT 1,2,3,4,5,6,7--+
id=-1
不存在 → 前查询返回空 → union select
的数据直接显示。
id=1
存在 → 前查询返回数据 → union select
的数据被忽略(只显示 id=1的结果)。
当然也可以使用id=1 and 1=2
与 union select
搭配,其目的都是一样的。
3.3 为什么有的注入语句后面需要加--+
?⭐
3.3.1. 标准SQL注释语法
-- 单行注释(ANSI标准)
/* 多行注释 */
# MySQL特有单行注释
3.3.2. 注入中特殊变体
--+ 是注入中的特殊变体:
- `--`:标准注释符
- `+`:在URL中代表空格(ASCII 0x20)
3.3.3. 必须使用--+
的情况
场景特征 | 示例 | 必要性分析 |
---|---|---|
URL参数注入 | ?id=1'--+ | URL中的空格会被编码,+ 确保注释生效 |
闭合单引号 | admin'--+ | 避免后续SQL语法错误 |
过滤空格环境 | 1'/**/OR/**/1=1--+ | WAF可能过滤空格但允许+ |
3.3.4. 可不使用的情况
场景特征 | 示例 | 原因分析 |
---|---|---|
数字型注入 | ?id=1 OR 1=1 | 无需闭合引号 |
报错注入 | ?id=1 AND updatexml(1,concat(0x7e,(SELECT@@version)),1) | 语句自包含无需截断 |
POST表单注入 | username=admin'-- | 表单数据不涉及URL编码 |
4. SQL注入时,一般会用到什么语句判断是否有注入点?⭐
目前学习中,我整理的结果是:
id=1 and 1=2
:测试布尔逻辑漏洞,通过返回页面差异判断注入点有效性id=1'
:检测单引号过滤情况,触发SQL语法错误判断字符型注入可能性id=1"
:检测双引号处理机制,验证是否存在二次闭合漏洞id=-1
:强制返回空数据集,为UNION注入创造有利条件id=MQ==
:Base64编码混淆攻击("1"的Base64),绕过基础WAF关键词检测
5.未完…
4. 最后🏁
大白话总结:
- 本文持续更新中,SQL注入系列内容会陆续补充完善
- 欢迎各位大佬指正文中错误(评论区见~)
- 整理创作不易,如果对你有帮助:
- 👍 点赞支持
- 💾 收藏备用
- ➕ 关注追更
声明:本文仅用于安全学习,严禁非法测试! ❗❗❗