前言
首先这个*是全角字符不会被hexo渲染
其次web总共只有一题
web手的末日.jpg(x
web ak了(大嘘
jwt2struts
hash长度扩展攻击+jwt+struts2
进入题目,f12发现hint

访问/JWT_key.php
 <?php
highlight_file(__FILE__);
include "./secret_key.php";
include "./salt.php";
//$salt = XXXXXXXXXXXXXX // the salt include 14 characters
//md5($salt."adminroot")=e6ccbf12de9d33ec27a5bcfb6a3293df
@$username = urldecode($_POST["username"]);
@$password = urldecode($_POST["password"]);
if (!empty($_COOKIE["digest"])) {
    if ($username === "admin" && $password != "root") {
         if ($_COOKIE["digest"] === md5($salt.$username.$password)) {
            die ("The secret_key is ". $secret_key);
        }
        else {
            die ("Your cookies don't match up! STOP HACKING THIS SITE.");
        }
    }
    else {
        die ("no no no");
    }
}
逻辑很简单,username必须等于admin,password不能为root,cookie的值digest要等于md5($salt.$username.$password)
在password这里测试了一下,发现几种编码绕过判断的方法都不管用
那只能强行让md5的值相等,但是爆破$salt的话要爆破10的14次方次,明显不现实
所以这里得用hash长度扩展攻击

\x得改为%

拿到secret_key为sk-he00lctf3r
回到首页,拿到set-cookie中的access_token,去jwt.io解码

带上key修改user为admin

带上cookie来到/admiiiiiiiiiiin页面

接下来是Struts部分
Struts2Scan脚本直接扫(f12发现对应的路由在/user.action下)
python Struts2Scan.py -u http://140.210.223.216:55557/admiiiiiiiiiiin/user.action

几个漏洞试了一下,能命令执行的只有S2-016
python Struts2Scan.py -u http://140.210.223.216:55557/admiiiiiiiiiiin/user.action -n S2-016 --exec
在环境变量里面找到flag

flag:
*CTF{7r0m_jwt_t0_struts2}