SQL注入学习笔记一
知识点
php.ini中disable_functionns可以禁用函数
include预防
产生原因:include包含点用户可控
isset():

robots.txt是什么:
robots.txt 是一个存放在网站根目录下的纯文本文件,它是机器人排除协议的一部分。它的作用是告诉网络爬虫该网站中哪些内容可以被抓取,哪些内容不可以被抓取。
科学计数法绕过:
利用了 WAF与 后端程序 在解析数据时的差异
假设 user_id=1 是管理员,WAF 禁止直接访问 1。攻击者可以使用 user_id=1e0 来获取管理员数据。
MySQL如何getshell(上传shell):
-
必须是root
-
某个字段必须需为空 : secure_file_priv:

默认是NULL(禁止导出),不能导出文件,必须是空白(什么都没有)
或者是具体路径,只能导出到具体路径 (如果是/tmp,导出到临时文件下)
如果是root权限也无法修改,修改须在 my.ini配置文件下修改(需要拿下服务器):
secure_file_priv 是一个 只读的系统变量。这意味着它只能在 MySQL 服务启动时通过配置文件(或启动命令行参数)读取,服务一旦启动,你就无法通过 SQL 命令动态修改它。
-
知道web物理路径(通过猜或者报错)
需要满足以上三个条件才能getshell
into outfile:
SELECT ... INTO OUTFILE将选定的行写入文件。可以指定列和行终止符以生成特定的输出格式。
例如:
SELECT '' INTO OUTFILE '/var/www/html/shell.php'
找后台工具:dirmap、dirsearch、awvs等
正则回溯绕过:
当正则表达式包含复杂的重复匹配时,如果输入的字符串很长且无法完全匹配,正则引擎会尝试各种可能的组合路径进行“回溯”。
假设 WAF 的规则是检测 union select,且使用了复杂的正则边界检查。攻击者发送: ?id=aaaaaaaaaaaa...(大量a)... union select 1,2,3-- - WAF 在匹配前缀的 a...a 时卡死,导致无法检测到后面的 union select,最终后端执行了 SQL 注入。
换行符:
%0a,%0b,%0c,%0d,%a0,%09
sqlmap:
常见参数有哪些,干什么的,os-shell,level,risk,techniqques
SQLMap 是一款开源的、自动化的 SQL 注入 渗透测试工具
基础目标指定
-u或--url= :指定要测试的目标网址。
-
例:
sqlmap -u "http://www.target.com/vuln.php?id=1"
.请求与数据控制
--data= :通过 POST 方式发送的数据。
例:sqlmap -u "http://www.target.com/login.php" --data="user=admin&pass=123"
-
--cookie=:指定 Cookie 字符串(用于测试 Cookie 注入或维持会话)。 -
--headers=:添加额外的 HTTP 头(如User-Agent或Authorization)。 -
--proxy=:使用 HTTP 代理(用于隐藏身份或绕过 IP 封锁)。 -
--delay=:每个 HTTP 请求之间的延迟(秒),用于避免触发 WAF 的频率限制。 -
--random-agent:使用随机生成的 User-Agent,避免被识别为工具。常见参数
--os-shell:
-
功能:尝试在目标服务器上建立一个交互式的操作系统 Shell(命令行环境)。
-
原理:如果数据库权限足够且配置允许,SQLMap 会尝试通过
INTO OUTFILE向 Web 目录写入 Webshell,或者尝试上传 DLL/共享库(UDF)来执行系统命令。
--level (测试等级):
-
功能:指定测试的深度(1-5),默认为 1。
-
区别:
-
Level 1-2:仅测试 GET/POST 参数。
-
Level 3:增加 Cookie 头的测试。
-
Level 4:增加 User-Agent 和 Referer 头的测试。
-
Level 5:增加更多种类的 HTTP 头测试。
-
--risk (风险等级):
-
功能:指定测试的风险等级(1-3),默认为 1。
-
区别:
-
Risk 1:常规测试,无害。
-
Risk 2:增加基于时间的 SQL 盲注测试。
-
Risk 3:增加基于 OR 的注入测试,这类测试可能会导致数据库中的大量数据被更新或删除,具有潜在破坏性。
-
--techniques (指定技术):
-
功能:指定 SQLMap 使用哪些注入技术进行测试,默认测试所有
-
选项:
-
B: Boolean-based blind(布尔盲注) -
E: Error-based(报错注入) -
U: Union query-based(联合查询注入) -
S: Stacked queries(堆叠查询) -
T: Time-based blind(时间盲注) -
Q: Inline queries(内联查询)
-
万能密码:or
“万能密码”是通过特定输入绕过系统认证(如登录、权限校验)的技巧,本质是利用系统对用户输入的处理漏洞(如未过滤特殊字符、未正确校验逻辑),使认证条件永远成立,从而非法访问。
or是逻辑或运算符,表示“只要其中一个条件为真,整个表达式就为真”。当它与'1'='1'(永远为真的条件)结合时,能强制让认证逻辑失效。
魔术开关是什么:php5.3之前存在,5.3以后默认关闭
魔术引号是PHP早期为自动转义用户输入数据中的特殊字符而设计的功能,目的是防止SQL注入等安全问题。当magic_quotes_gpc(Get/Post/Cookie)或magic_quotes_runtime(运行时数据)开启时,PHP会自动将用户输入中的特殊字符(如单引号'、双引号"、反斜杠、NULL字符

