MRCTF2020-WP

 · 2020-4-28 · 次阅读


1.[MRCTF2020]你传你🐎呢
用BPfuzz了一下,发现以下可以用后缀:

test.Phtml/
test.Phtml%00.jpg
.htaccess

前两个试了试无法利用,很明显第三个应该可以。也就是先上传一个htaccess文件再上传一个图片🐴即可。
最后蚁剑连接即可拿到flag.
之所以.htaccess可以利用,主要是没有被ban,也就是这道题依旧是一个上传黑名单,然后.htaccess里面写入的一小段代码,可以让之后上传的.jpg文件被解析成php文件从而导致利用成功。
网上看到了两段代码:

AddType  application/x-httpd-php    .jpg
SetHandler application/x-httpd-php

本题我利用的下面这个。

2.[MRCTF2020]Ez_bypass
打开页面是一段乱糟糟的代码,右键查看源代码即可看到整齐代码(原理是换行符在该页面不被解析,但右键查看源代码里面是可以解析这些换行符的。)

I put something in F12 for you
include 'flag.php';
$flag='MRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}';
if(isset($_GET['gg'])&&isset($_GET['id'])) {
    $id=$_GET['id'];
    $gg=$_GET['gg'];
    if (md5($id) === md5($gg) && $id !== $gg) {
        echo 'You got the first step';
        if(isset($_POST['passwd'])) {
            $passwd=$_POST['passwd'];
            if (!is_numeric($passwd))
            {
                 if($passwd==1234567)
                 {
                     echo 'Good Job!';
                     highlight_file('flag.php');
                     die('By Retr_0');
                 }
                 else
                 {
                     echo "can you think twice??";
                 }
            }
            else{
                echo 'You can not get it !';
            }

        }
        else{
            die('only one way to get the flag');
        }
}
    else {
        echo "You are not a real hacker!";
    }
}
else{
    die('Please input first');
}
}Please input first

的确良心了,ez,直接
get传id[]=123&gg[]=234
post传pwd=1234567a
即可,注意提交包的时候加上:Content-Type: application/x-www-form-urlencoded
定义包的编码方式以防止,解析错误导致得不到flag.
最后拿到flag.

3.[MRCTF2020]PYWebsite
一开始看到这个标题,以为会让我写python脚本的。。
进入页面先查看源代码发现:

<script>

    function enc(code){
      hash = hex_md5(code);
      return hash;
    }
    function validate(){
      var code = document.getElementById("vcode").value;
      if (code != ""){
        if(hex_md5(code) == "0cd4da0223c0b280829dc3ea458d655c"){
          alert("您通过了验证!");
          window.location = "./flag.php"
        }else{
          alert("你的授权码不正确!");
        }
      }else{
        alert("请输入授权码");
      }

    }

  </script>

这个时候我居然想到的是通过验证,然后就会跳转flag.php.但是很遗憾不会传入这个code。
然后我直接访问/flag.php发现:
py
上面可以看到IP被记录了,然后验证逻辑是在后端的,除了购买者和我自己。
看到这里应该是IP伪造无疑了,抓包设置XFF为127.0.0.1.拿到flag.

4.[MRCTF2020]套娃