一、web
1、基础知识
(1)CTF简介

flag就在文末
(2)竞赛模式

同样
(3)比赛形式

还是
(4)题目类型

也是。。。。
2、签到

同上
3、web前置技能之http协议
(1)请求方式

http请求方式可以自定义,按要求用bp抓包后将GET替换为CTFHUB即可

(2)302跳转
根据提示点击Give me the flag,使用网络工具可以看出,要请求的是index.php或者是favicon.ico而不是index.html,被临时重定向了。

于是我们直接访问index.php即可获得flag。

(3)cookie
我们使用bp抓包可以发现,cookie中的admin值为0,根据提示,我们将值改为1

即可得到flag

(4)基础认证
在登录框中输入账号密码皆为123,使用bp抓包我们可以看到

很明显是一串BASE64字符,解码得到

于是我们知道提交密码的格式是账号:密码,再用BASE64加密
把包发送给intruder,进行密码爆破。载入附件内的密码集。同时添加BASE64编码处理,取消勾选有效载荷编码,然后开始攻击。

然后我们可以看到有一个密码返回200了,我们直接解码拿去登录就行


得到flag

(5)响应包源代码
flag就在网页源码里

4.web信息泄露模块
(1)目录遍历
打开题目可以看到有四个目录,点击后发现每个目录下还有4个目录,由于数量较少,我们可以手动寻找

最后找到flag在 /4/1
目录中

但是要是目录太多,要这样一个个翻找肯定是不现实的,我们利用python自动寻找

于是得到含有flag.txt的目录

(2)PHPINFO

直接在源码中找到flag
(3)备份文件下载
a.网站源码
直接使用dirsearch,这个绿色是格外显眼啊

直接访问,打开压缩包发现他在耍我们

但是这个名字好熟悉,我们看看有没有这个文件
完美

Diesearch
Dirsearch 是一个用于探测Web服务器上的隐藏目录和文件的工具。它通过发送HTTP请求来尝试访问可能存在的路径,从而找到不列在网站目录页面上的隐藏资源。
b. bak文件
bak文件
bak文件是计算机系统中的备份文件格式,用于保护数据安全。它通常由软件自动生成或与特定软件关联,内容通常与原始文件相同或相似。bak文件可手动重命名或修改扩展名以恢复和打开。
依然是使用dirsearch,还是那个颜色

直接下载,记事本打开可以看到flag

c. vim缓存
先介绍一下vim
Vim
Vim 是一款功能强大的文本编辑器,在程序员和系统管理员等群体中广泛使用。
- 历史背景
- Vim 是从 Vi 编辑器发展而来的。Vi 诞生于 1976 年,是 Unix 操作系统早期就存在的文本编辑器。Vim(Vi Improved)则是在 Vi 基础上改进的版本,它最初由 Bram Moolenaar 在 1991 年发布。其目的是为了提供更多的功能和更好的用户体验。
- 工作模式
- 命令模式(Command Mode):这是 Vim 启动后的默认模式。在这个模式下,你可以使用各种命令来操作文本,如移动光标(使用 h、j、k、l 分别表示左、下、上、右移动光标)、删除文本(如 dd 删除一行,x 删除光标所在字符)、复制粘贴(yy 复制一行,p 粘贴)等。例如,如果你想删除一个单词,可以使用 dw 命令,它会删除从光标位置开始到单词末尾的字符。
- 插入模式(Insert Mode):用于输入文本内容。可以通过按下 i(在光标前插入)、a(在光标后插入)、o(在当前行下方新开一行并插入)等键从命令模式进入插入模式。当你完成文本输入后,按下 Esc 键就可以回到命令模式。
- 末行模式(Last Line Mode):通过在命令模式下按下 “:” 进入。在这个模式下,可以执行一些复杂的命令,比如保存文件(使用:w 命令)、退出 Vim(:q 命令,如果文件有未保存的修改,使用:q! 强制退出)、查找替换(如:% s/old/new/g 可以将文件中所有的 “old” 替换为 “new”)等。
同时介绍一下vim的缓存文件
vim 交换文件名
在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容
第一次产生的交换文件名为.xxx .xxx.swp
再次意外退出后,将会产生名为 .xxx.xxx.swo
的交换文件
第三次产生的交换文件则为 .xxx.xxx.swn
请出dirsearch,又是一抹绿

直接下载(注意前面那个点不要掉了),记事本打开得到flag

d. . DS_Store
介绍一下本题主角
. DS_Store
DS_Store,英文全称是 Desktop Services Store(桌面服务存储),开头的 DS 是 Desktop Services(桌面服务) 的缩写。它是一种由macOS系统自动创建的隐藏文件,存在于每一个用「访达」打开过的文件夹下面。
我们直接下载本题文件

记事本打开,发现

后缀可以划分成,txt+note+ustr,或许这是一个txt文档?访问一下试试

果然如此
(4)Git泄露
a. Log
本题要先安装python环境,以及Git,GitHack工具
由于GitHack运行在python2.7环境下,但是我们现在都是用python3了(所以你可能找不到Tools文件夹),所以我采用了安装两个版本python的方案。可以参考教程,反正我是成功了。
或者可以直接在kali里安装,直接把Githack-Master文件夹下载后拖到kali桌面就可以使用了,它已经内置了两个Python环境。
同时注意,教程到这里↘ 就已经完成安装了
python GitHack.py http://www.openssl.org/.git/
教程说这个是安装的一步是错误的,这个是已经在攻击网站了
用法就是python GitHack.py -u URL
,记得在githack-master目录下执行,在该目录右键打开终端即可。不要忘记加.git哦
成功获取到git存储库内的信息

会在目录下生成一个dist的文件夹,我们在此处打开终端,利用git log
命令查看编辑历史。

可以看到发生在第二次修改时的add flag,说明我们所要的flag就在第二次修改时加入的文件中,使用git reset这一个版本回退命令来查看flag,命令 git reset --hard +对应版本的commit

可以看到新增文件了

打开即为flag
b. stash
Git stash
Git stash可以将当前工作目录中的修改暂存起来,以便在需要的时候重新应用这些修改。这个功能特别适用于在切换分支或执行其他操作时,当前工作目录中有未提交的修改,但又不希望立即提交这些修改的情况。
stash的基本命令
保存修改:
git stash:保存当前工作目录中的修改到一个新的stash堆栈中,并恢复到一个干净的工作目录。
git stash save “message”:可以附加一个消息来保存stash,这有助于后续识别stash的内容。
git stash -u 或 git stash –include-untracked:除了保存已跟踪文件的更改外,还会保存工作目录中的新文件(即未跟踪的文件)。
查看保存的stash:
git stash list:列出所有保存的stash记录,每条记录都有一个唯一的标识符。
应用stash:
git stash apply:将最新保存的stash应用到当前分支。
git stash apply stash@{n}:将指定的stash应用到当前分支,其中n是stash记录的标识符。
git stash pop:恢复最新保存的stash到当前分支,并从堆栈中删除该stash。
git stash pop stash@{n}:恢复指定的stash到当前分支,并从堆栈中删除该stash。
删除stash:
git stash drop:删除最新保存的stash。
git stash drop stash@{n}:删除指定的stash。
创建新分支并恢复stash:
git stash branch :创建一个新的分支,并将最新保存的stash应用到该分支上。
我们使用git stash list
先查看是否存在stash缓存,确实有

所以我们用git stash pop
回复stash缓存,得到flag


c. index
这题不需要什么过多的操作,直接使用GitHack攻击,就可以看到flag文件了

(5) SVN泄露
SVN
1)什么是SVN?
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。
2)漏洞成因
在服务器上布署代码时。如果是使用 svn checkout 功能来更新代码,而没有配置好目录访问权限,则会存在此漏洞。黑客利用此漏洞,可以下载整套网站的源代码。
在使用SVN管理本地代码过程中,会自动生成一个隐藏文件夹,其中包含重要的源代码信息。但一些网站管理员在发布代码时,不愿意使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使隐藏文件夹被暴露于外网环境,这使得渗透工程师可以借助其中包含版本信息追踪的网站文件,逐步摸清站点结构。
该工具需要perl环境(真TM坑)才能运行,windows系统我还没搞定,不好安装依赖,运行不了。所以还是在kali安装吧。kali内置了perl。
#kali中安装
sudo apt-get upgrade
sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl
sudo apt-get install libparallel-forkmanager-perl libredis-perl libalgorithm-combinatorics-perl
sudo apt-get install cvs subversion git bzr mercurial
git clone https://github.com/kost/dvcs-ripper
使用方法,在dvcs-ripper文件夹下打开终端,git不下来的直接把文件夹放进kali
perl rip-svn.pl -u http://www.example.com/.svn
在执行命令后可以得到

找文件

找到了
(6)HG泄露
和.svn做法几乎一致,稍微改代码
perl rip-hg.pl -v- u url/.hg
执行完后找文件

发现一个flag文件,我们直接访问即可得到flag
5.密码口令模块
(1)弱口令
盲猜一波账号是admin,然后使用bp抓包爆破,发现一个长度不太一样的密码。

直接发给repeater,得到flag

(2)默认口令
我们可以直接搜索到这个服务的默认密码,然后我们就逐个测试

然后就试出来了

二、PWN
(1)gift_pwn
PWN栈溢出
https://ctf-wiki.org/pwn/linux/user-mode/stackoverflow/x86/stackoverflow-basic
栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变。这种问题是一种特定的缓冲区溢出漏洞,类似的还有堆溢出,bss 段溢出等溢出方式。栈溢出漏洞轻则可以使程序崩溃,重则可以使攻击者控制程序执行流程。此外,我们也不难发现,发生栈溢出的基本前提是:
- 程序必须向栈上写入数据。
- 写入的数据大小没有被良好地控制。
我们打开Unbuntu,然后使用checksec工具,查看附件基本信息

但是不知道为什么不显示Arch信息,白搭,盲猜是64位,拖到ida64里反汇编得到

加油啊,当年李某一晚上就做完了
李某是谁,是师兄吗?🤔