Fastjson 是阿里开源的高性能 JSON 解析库,在国内 Java 项目里用得非常多。它早期为了实现「按需还原对象类型」引入了 AutoType 机制,反而把自己变成了反序列化漏洞的重灾区。官方这些年一直靠黑名单打补丁,但绕过手法层出不穷,从 1.2.24 一路打到 1.2.68 之后,中间几乎每个版本都能找到对应的绕过姿势。 这篇文章按版本…
前三篇解决的是"把数据读出来"。这一篇解决"从读数据到执行命令、拿服务器"。 能读数据不等于能执行命令,中间隔着好几道门:数据库账号的权限、操作系统对数据库进程的约束、文件系统的写权限。这一篇把每条路的前提条件写清楚,重点是失败了怎么判断卡在哪一道门上。 一、MySQL 提权的几条路 先把全局理一遍,每条路的…
前五篇都在讲怎么打。这一篇讲两边:WAF 分几类、各自的弱点在哪、通用绕过手法逐条配 payload;以及反过来,从代码层到运营层怎么把 SQL 注入按住。 先给一个前提,后面所有内容都建立在它上面:WAF 是降低攻击效率的一层,不是杜绝攻击的一层。它基于规则和特征,绕过它的思路本质上就两种——让 payload 长得不像规则里的样子,或者让 WA…
这一篇把 sqlmap 这个黑盒拆开。面试问"sqlmap 怎么判断注入的""--os-shell 原理是什么""怎么识别 sqlmap 流量",答案都在这里。 不写基本用法教程。假设你已经会敲 sqlmap -u,讲的是它在背后干了什么。 一、sqlmap 是怎么判断注入的 1.1 六种…
前两篇的 payload 默认目标都是 MySQL。这一篇解决两个问题:换成别的数据库怎么写,以及完全看不到回显的时候怎么把数据带出来。 一、先确认打的是什么数据库 数据库类型决定了后面所有 payload 的写法,这一步不能跳。 1.1 从报错判断 最快的办法,前提是报错回显: 报错特征数据库You have an error in your S…
上一篇讲完了原理、预编译失效的十个场景和注入点定位。这一篇解决下一个问题:确认存在注入之后,数据怎么抠出来。 一、先确定用哪种方式 同一个注入点,能用的手法取决于三件事:页面有没有回显、报错有没有返回给用户、真假两种状态有没有差异。按这个顺序往下判断,第一个满足条件的就是首选: 有正常回显位,union 没被拦 -> 联合查询(最快) 报错信…
一、注入的本质是代码和数据的边界被打破 先看一段真实项目里很常见的登录代码: $username = $_POST['username']; $password = $_POST['password']; $sql = "select * from users where username='$username' and password…