本篇wp是参考官方wp进行的复现(因为自己做不出来&&我就是个大菜鸡&&大佬们tql%%%)
主要是对官方wp做一些自己的补充,官方wp写的很详细了,这篇wp就相对简略一些
T1.一行代码
eregi函数匹配时不区分大小写,可以用这个特性绕过过滤,参数content传值是ctfshoW
get_file_contents函数可以用php伪协议(给忘了...)
T2.web签到
这道题直接做显然离谱,求a^3+b^3+c^3=114的解肯定求不出来()
正确方法是闭合括号拼接,这种方法在SQL注入里面非常常用,一个迁移~
T3.黑客网站
一个页面,上面很多字母,全部复制下来发现是循环,把循环的内容拿出来看,发现结尾xxion...
特征很明显,删掉前面的空格,后面的xxion当后缀,用某葱浏览器访问就可以了
T4.登录不了
参考:[RoarCTF 2019]Easy Java Java和tomcat文件存放读取 - 零零小菜鸡 - 博客园 (cnblogs.com)
这道题是一个java框架,网上搜到了思路类似的Easy java[RoarCTF 2019],这种java框架关键路径是WEB-INF目录
WEB-INF主要包含一下文件或目录:
/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件
漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接class文件,在通过反编译class文件,得到网站源码
验证码界面是一个目录遍历漏洞,任意文件读
(不知道是不是我bp的问题,好像bp上显示乱码,我只能把16进制代码复制到某个文件里再用java decompiler反编译,反编译的时候注意:jar包后面要多复制5个00,class文件开头是CA FE BA BE)
先读web.xml(网站配置文件),pom.xml(java项目信息)
再读源码jar包(是从前面得到的路径),用java decompiler反编译
再读配置文件WEB-INF/config/controller.properties(源码中的config配置文件)
拿到控制器接口,读Index.class和Validate.class,路径是根据包名,从WEB-INF/classes/文件夹开始,每一个包就是一层目录,比如
com.ctfshow.controller.Index接口就是WEB-INF/classes/com/ctfshow/controller/Index.class文件
读出来发现有任意文件写漏洞,登录页面的username是文件名,password是写入内容,写入路径
String.valueOf(this.request.server().path()的值是WEB-INF/classes/文件夹,然后拼接了../,最终写入的文件夹是WEB-INF
利用tomcat加载机制重写web.xml创建新页面接口(官方wp中创建了ctfshow接口,对应访问1.jsp,一般来说WEB-INF中的文件是不允许访问的,但是可以通过在web.xml中创建接口来访问)
写入1.jsp,找到绝对路径,为后面执行反弹shell脚本找参数
写入1.sh反弹shell脚本,反弹到自己的服务器上
再写1.jsp,执行1.sh反弹shell,拿到root权限,根目录下就有flag
复现完成()
我的博客:https://yinkstudio.xyz,欢迎关注~