Struts2_struts标签&OGNL使用

本文详细解析了Struts2框架中iterator标签的使用方法及其与JSTL中<c:Each>标签的相似之处,介绍了如何利用OGNL进行集合的过滤和投影操作,同时阐述了Struts2中各种符号的用途及常用标签的功能。

1. iterator标签

相当于jstl中的<c:Each>标签,循环遍历作用

在action中设置一个list集合,并且为其提供get方法,当访问该action时,这个list会自动存在ValueStack中,因为提供了get方法

 

其属性status有一些方法,比如是否为偶数是否为奇数

示例:

效果:

 2. OGNL投影

使用过滤条件投影:

即给集合加一个过滤条件,筛选掉不满足条件的数据

?#过滤所有符合条件的集合

list.{?#this.age>30}
^#过滤第一个符合条件的集合


list.{^#this.age>30}
$#过滤最后一个符合条件的集合


list.{$#this.age>30}

 

 list中数据:

 

使用指定属性投影:

 

3. Struts各种符号的用处

3.1.  #

  1. 取contextMap中key时使用,例如<s:property value="#name" />
  2. OGNL中创建Map对象时使用,例如:<s:radio list="#{'male':'男','female':'女'}" />

3.2.  $

  1. 在JSP中使用EL表达式时使用,例如${name}
  2. 在xml配置文件中,编写OGNL表达式时使用,例如文件下载时,文件名编码。

struts.xml——>${@java.net.URLEncoder.encode(filename)}

3.3.  %

在struts2中,有些标签的value属性取值就是一个OGNL表达式,例如<s:property value="OGNL Expression" />

还有一部分标签,value属性的取值就是普通字 符串,例如<s:textfield value="username"/>,如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。

例如<s:textfield value="%{username}"/>。

当然在<s:property value="%{OGNL Expression}" />也可以使用,但不会这么用。

 

4. struts的其他标签:

s:set标签

其各个属性讲解

value存入contextMap中的值,是一个OGNL表达式
var存入contextMap中key
scope存储的范围(session等)

scope不写的话,默认存到contextMap和request中

这里面注意value中默认会当成ognl表达式,所以这里应该加上单引号

s:action

s:if s:elseif s:else

 

s:url    s:a(很少用)

s:url

声明一个url路径,存在contextMap中,注意在这里面传参只能传递一个参数

 

 

s:a

 

 

虽然给定引用中未直接提及`exploit(multi/http/struts2_content_type_ognl)`模块设置`Rhosts`、`RHOSTS`、`RPORT`和`targeturi`的使用说明,但可以依据Metasploit的通用使用逻辑来推测。 ### Rhosts和RHOSTS 在Metasploit中,`RHOSTS`通常用于指定目标主机的地址,它可以是单个IP地址,也可以是一个IP地址范围,或者是一个包含多个IP地址的文件路径。设置`RHOSTS`的命令格式如下: ```plaintext msf6 exploit(multi/http/struts2_content_type_ognl) > set RHOSTS 192.168.1.100 ``` 这里将目标主机的IP地址设置为`192.168.1.100`。如果要扫描一个IP地址段,可以使用如下命令: ```plaintext msf6 exploit(multi/http/struts2_content_type_ognl) > set RHOSTS 192.168.1.0/24 ``` 注意事项:确保输入的IP地址或地址段是有效的,否则扫描将无法正常进行。 ### RPORT `RPORT`用于指定目标主机上服务的端口号,默认情况下,不同的模块可能有不同的默认端口。对于这个模块,需要根据目标主机上Struts2服务实际监听的端口进行设置。设置`RPORT`的命令格式如下: ```plaintext msf6 exploit(multi/http/struts2_content_type_ognl) > set RPORT 8080 ``` 这里将目标主机上Struts2服务的端口设置为`8080`。 注意事项:要准确了解目标主机上服务的实际端口,否则可能无法成功连接到目标服务。 ### targeturi `targeturi`用于指定目标服务的URI路径。有些Web服务可能不是部署在根目录下,而是在特定的路径下,这时就需要设置`targeturi`。设置`targeturi`的命令格式如下: ```plaintext msf6 exploit(multi/http/struts2_content_type_ognl) > set targeturi /struts2-app ``` 这里将目标服务的URI路径设置为`/struts2-app`。 注意事项:需要准确知道目标服务的实际URI路径,否则可能无法正确定位到目标服务。 后续操作:在设置好这些参数后,可以使用`exploit`或`run`命令来尝试利用漏洞,例如: ```plaintext msf6 exploit(multi/http/struts2_content_type_ognl) > exploit ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值