CTFshow-Java系列
CTFshow-java系列
web279-web300
前言
java基础学了一段时间了也跟着白日梦组长学了一点java反序列化了,说实话,白日梦组长讲的确实好,一个类一个类带着你捋,领着你看看怎么是找到某个函数某个方法的,来做一下CTFshow的题,一方面看看java在ctf题中的应用,也来继续学习一下java。本篇文章跟着海神的文章学习的,我的神!
此篇文章里全是Struts2框架漏洞Struts2是用Java语言编写的一个基于MVC设计模式的Web应用框架
判断网站是否基于Struts2的方法链接
通过页面回显的错误消息来判断,页面不回显错误消息时则无效
通过网页后缀来判断,如.do .action,有可能不准
如果配置文件中常数extension的值以逗号结尾或者有空值,指明了action可以不带后缀,那么不带后缀的uri也可能是struts2框架搭建的
如果使用Struts2的rest插件,其默认的struts-plugin.xml指定的请求后缀为xhtml,xml和json
判断 /struts/webconsole.html 是否存在来进行判断,需要 devMode 为 true
web279
开题一个where is flag?点了跳转到这里
看了海神的wp,是Struts2漏洞
漏洞原理
struts2漏洞 S2-001是当用户提交表单数据且验证失败时,服务器使用OGNL表达式解析用户先前提交的参数值,%{value}并重新填充相应的表单数据
如果在密码处输入的是%{1+1}相应的会变成2说明存在S2-001漏洞
海神在博客中还说了OGNl表达式的用法
了解下OGNL表达式中三个符号 %,#,$ 的含义
%的用途是在标志的属性为字符串类型时,计算OGNL表达式%{}中的值
‘#’的用途访主要是访问非根对象属性,因为Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀才可以调用
$主要是在Struts 2配置文件中,引用OGNL表达式
下面给出三条利用语句:
获取tomcat路径 |
---|
%{“tomcatBinDir{“+@java.lang.System@getProperty(“user.dir”)+”}”} |
tomcatBinDir{/usr/local/tomcat/webapps}
获取web路径 |
---|
% |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 晴川's Blog🌈!