攻防世界 | CAT
来自攻防世界官方WP | darkless师傅版本
题目描述
抓住那只猫
思路
打开页面,有个输入框输入域名,输入baidu.com进行测试
发现无任何回显,输入127.0.0.1进行测试。
发现已经执行成功,执行的是一个ping命令,一开始想的应该是命令拼接执行,但是输入任何有关拼接的字符串都会提示invalid url
说明系统对这些字符串都进行了过滤,fuzz测试后发现只有@
没有被过滤。
且当输入@
时,会将@
编码为%40
尝试在url处输入宽字符,比如%bf
出现报错信息,是一段html代码,将这些代码复制出来打开。
看到了熟悉的django报错页面,看来是将输入的参数传到了后端的django服务中进行解析,而django设置了编码为gbk导致错误编码了宽字符(超过了ascii码范围)。
到这一步后,联系到前面的@
字符没有被过滤,然后看了大佬们的解题思路(这里太坑了,原题目上其实是由提示的)
意思是可以用@
读取文件内容。
结合django的报错得知了项目的绝对路径为/opt/api
这里还需要懂一些django开发的基本知识,我感觉这道题涉及的面有点广了,django项目下一般有个settings.py文件是设置网站数据库路径(django默认使用的的是sqlites数据库),如果使用的是其它数据库的话settings.py则设置用户名和密码。除此外settings.py还会对项目整体的设置进行定义。
读取settings.py文件,这里需要注意django项目生成时settings.py会存放在以项目目录下再以项目名称命名的文件夹下面。
同上将报错信息已html文件打开,可看到一些敏感信息:
同样在使用@
读取数据库信息
在报错信息中搜索CTF得到flag。
以上就是这道题的解法,我只能说大佬们的思路真野!
总结:
- Django 是用python语言写的开源web开发框架
- http://www.wupco.cn/?p=4195
- curl的@+文件名做本地文件读取
- django开发
- 宽字节注入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异