当前位置: 首页 > news >正文

NSSCTF 理想国

打开页面,发现是Json内容

用浏览器插件发现了几个关键的URL地址,不用插件也可以在JSON代码中看到

然后挨个访问这些URL地址

可以看到都是这样的页面

在JSON代码中可以看到一些参数,并且是用POST传输的

然后直接BP抓包

这里直接右键修改请求方式

因为这里我们肯定没有账号的,先注册一个,所以访问/api-base/v0/register地址

然后POST请求体写入用户名和密码,需要用JSON格式,并且类型也需要改成JSON

然后尝试登录看看会有什么东西返回

这里返回了token,先保存下来

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InJvb3QiLCJwYXNzd29yZCI6IjEyMzQ1NiJ9.V0KS0O2nxfSXoTPKUxQTQOa_rOnKxyxg2HUYrnJbhIk

现场已经用来注册、登录两个地址,还有search和logout没用,logout明显是登出,所以直接看看search地址

并且searchJSON中有接收的参数

这里尝试读取一个我们知道的文件../../../etc/passwd​

显示token错误了

上面不是获取了我们注册用户的token了,将这个token放入Cookie中

可以看到成功访问到了

这里我们并不知道flag在哪,所以只能猜一下

#根目录
../../../flag
../../../flag.txt#当前目录
POST /api-base/v0/search?file=./flag HTTP/1.1
POST /api-base/v0/search?file=flag HTTP/1.1
POST /api-base/v0/search?file=../flag HTTP/1.1# 各种可能的 flag 文件名
POST /api-base/v0/search?file=../../../flag.txt HTTP/1.1
POST /api-base/v0/search?file=../../../FLAG HTTP/1.1
POST /api-base/v0/search?file=../../../flag.txt HTTP/1.1
POST /api-base/v0/search?file=../../../fla.g HTTP/1.1# 用户目录
POST /api-base/v0/search?file=../../../home/flag HTTP/1.1
POST /api-base/v0/search?file=../../../root/flag HTTP/1.1# 临时目录
POST /api-base/v0/search?file=../../../tmp/flag HTTP/1.1# 应用配置目录
POST /api-base/v0/search?file=../../../app/flag HTTP/1.1
POST /api-base/v0/search?file=../../../opt/flag HTTP/1.1

这些目录都试一下,也可以放入BP用爆破模式爆一遍,我都试了,都返回File not found,所以没办法直接读flag

那么就接着下面的思路

#查看进程信息
POST /api-base/v0/search?file=../../../proc/self/cmdline HTTP/1.1#查看环境变量
POST /api-base/v0/search?file=../../../proc/self/environ HTTP/1.1#查看应用源代码
POST /api-base/v0/search?file=../../../app/app.py HTTP/1.1
POST /api-base/v0/search?file=../../../app/main.py HTTP/1.1
POST /api-base/v0/search?file=../../../server.py HTTP/1.1

都查看一下,发现在环境变量中有关键内容

SECRET_KEY,这个是JWT的加密密钥

SECRET_KEY=B3@uTy_L1es_IN_7he_EyEs_0f_Th3_BEh0ld3r

然后在app.py中也看到了源代码

将这个源代码用代码美化工具美化一下,然后放入Pycharm中进行查看

这里可以看到,用GET方式请求/enterIdealState就可以读取readflag,从而返回出来

直接访问这个发现出现了一段提示

翻译一下,内容如下

把这段话在源码中找一下

发现在一个check函数中,并且是通过if判断,如果用户名不是Plato并且密码不是ideal_state就会输出上面的内容,也就是我们需要构造token,账号密码分别对应Plato、ideal_state

上面我们已经拿到了JWT的key,所以直接用工具构造token即可

将token换成刚生成的这个token,然后访问/enterIdealState,成功获得flag

http://www.dtcms.com/a/487531.html

相关文章:

  • 极速迁移:GitLab项目无缝转移实战手册
  • 视频解析转换耗时—OpenCV优化摸索路
  • 自己电脑做网站谁有网站推荐一下好
  • 组织架构树形选择组件使用说明(Vue3 + UniApp)
  • 响应式网站开发步骤去哪里学习建设网站
  • 网站建设与管理用什么软件有哪些内容南京外包公司
  • 电子商务网站规划的原则江苏省城乡建设网站
  • 项目学习总结:CAN总线、摄像头、STM32概述
  • Linux中在字符串中查找指定字符的第一次出现位置的汇编实现
  • 官方网站撰写策划书分布式移动网站开发技术
  • OpenPI源码分析
  • 智能化早诊:深度学习如何改变阿尔茨海默病的诊断未来
  • 把 AI“折”进纸里:基于折纸超材料的生成式电磁隐身设计,0.1mm 厚度实现 8-18GHz 全波段低可探测
  • 现在网站建设用什么语言开网店怎么找货源一件代发
  • 智能硬件使用小聆AI自定义MCP应用开发操作讲解
  • 一流的五屏网站建设企业网站建设 论文
  • 03、51 单片机介绍
  • PHP+MySQL开发实战:从数据库操作到SQL注入漏洞原理解析
  • 【MySQL】管理
  • 计算机视觉(opencv)——基于 MediaPipe 人体姿态检测
  • Spring ApplicationEventPublisher 异步处理与消息队列全面解析
  • 站长网站被跳转怎么办WordPress怎么去掉主题也没
  • 自定义View —> 项目中遇到的复杂UI
  • 网站中信息更新怎么做的烟台建网站
  • IIS发版各接口慢排查
  • 【操作系统核心详解】段式存储与页式存储:区别、碎片及虚拟内存的本质
  • 网站导航图怎么做网站建设邀标比选
  • 杭州网站建设出名企业网站推广技巧有哪些
  • 优质中药饮片供应是什么?主要涵盖哪些关键质量标准?
  • 代码随想录第36天第37天 | 01背包应用 及 完全背包⭐