前言
首先这个*是全角字符不会被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}