bugkuctf jwt

bugku jwt


查看页面源码,发现了注释,<!–hint:NNVTU23LGEZDG===–>
很像是base64,但是不是,解密结果为未知字符。又去注了半天,没有跑出密码,后来看了大佬的wp才发现是base32,无语,思维定型了,开始的时候想着试试base32,自己把自己否定了,我tcl了。
注释内容base32解密后是kk:kkk123,猜测是账户和密码,登陆成功

信息上要用L3yx的身份登陆,扫描这个ip,发现了src
得到了.swp的源码,用vim -r还原文件,得到源码

<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>在线日记本</title>
<form action="" method="POST">
  <p>username: <input
### CTF JWT RS256 攻击与防御技巧 #### 攻击方法 在CTF竞赛中,针对JWT(JSON Web Token)RS256算法的攻击主要集中在几个方面: 1. **公钥泄露** 如果服务器使用的公钥被泄露,则可以利用该公钥伪造签名。由于RS256依赖于非对称加密中的私钥进行签名验证,一旦获取到用于验证的公钥,就可以尝试通过暴力破解或其他手段获得对应的私钥[^1]。 2. **混淆无验签模式** 当应用程序配置错误时,可能会允许`none`类型的token绕过鉴权逻辑。尽管这通常不适用于RS256场景下,但如果服务端存在漏洞未能严格校验alg字段,仍有可能受到此类攻击的影响[^2]。 3. **密钥替换攻击** 假设应用同时支持多种签名算法,在某些情况下可以通过修改header部分使 alg 参数变为 HS256 并提供一个已知的秘密作为 HMAC 密钥来创建有效的 token 。然而对于纯RS256实现来说这种可能性较低除非实现了混合模式的支持[^3]。 ```python import jwt # 模拟恶意用户试图更改alg参数并使用HS256代替RS256的情况 malicious_token = jwt.encode({"some": "payload"}, 'secret', algorithm='HS256') print(malicious_token) ``` #### 防御措施 为了有效抵御上述提到的各种潜在威胁,可以从以下几个角度加强安全防护: 1. **保护好私钥/公钥** 私钥应该妥善保管,并且仅限授权人员访问;而公钥则应定期更新发布新版本的同时废除旧版以减少长期暴露风险[^4]。 2. **强制指定签名算法** 应用程序应当明确限定所接受的令牌只能采用特定的一种或几种强安全性较高的算法如ES256, PS256等而不是默认开放所有选项给客户端选择[^5]。 3. **实施严格的输入验证** 对接收到的所有请求都需进行全面细致的数据清洗工作特别是涉及到敏感操作的地方更要谨慎处理防止SQL注入XSS等问题的发生同时也包括对传入Token头部信息的有效性审查确保其未被篡改[^6]。 4. **启用额外的身份认证机制** 结合其他形式的身份确认方式比如双因素或多因子身份验证(MFA),即使发生Token被盗取也能极大程度上保障账户的安全性不受侵害[^7]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值