2026 Scarletctf

参考wp

Commentary

托管反向代理服务器

这里顺便学习了一些Linux系统的WEB代理服务器的配置知识

反向代理具有以下几个主要优势:

  • 增强安全性:隐藏后端服务器的 IP 地址,并通过 TLS/SSL 启用加密。
  • 负载均衡:将流量均匀分配到多个后端服务器上。
  • 优化:降低延迟并提高资源效率。
  • 可扩展性:更容易管理高流量场景。
  • 易于管理:简化了统一域背后多个后端服务的配置。

尝试搭了一点儿nginx反向代理,试了下自定义防火墙,后来发现和题没啥关系了,就没有继续做下去

HTTP Host标头的操作

先扫描网站看端口

nginx 这样的 Web 服务器托管多个虚拟主机时,它会使用 HTTPHost头部来确定要提供哪个站点的服务。在 HTTP/1.1 中,Host 头部是必需的。然而,在 HTTP/1.0 中,Host 头部并非必需。

图解HTTP P106 关于HOST的内容是这样的:

  • 首部字段 Host 会告知服务器,请求的资源所处的互联网主机名和端口号。Host 首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段。

根据提示就是不通过HOST去访问,那么就去访问HTTP/1.0不加HOST就可以了

如果向端口 80 发送不带 Host 标头的 HTTP/1.0 请求,nginx 将回退到提供其默认页面,因为它无法确定要将请求路由到哪个虚拟主机

GET:HTTP请求服务的一种方式(并不只局限于脚本中)也不只是局限于对url的更改,但是可以通过命令行直接对url执行内容

需要作为一个完整的HTTP请求的一部分,通过网络发送到目标服务器,才能触发服务器的响应

payload的结构:

1
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80

这里就会打印返回的HTTP响应,比如HTML内容

需要结合netcat (nc)telnet等工具将这个请求发送到服务器端口(如80或443)才能看到服务器的响应

使用HTTP/1.1协议的GET方式请求资源

\r\n:回车加换行,表示内容的新行

swe_intern

关于.git泄露原理问题

做这个题的时候还没有接触.git泄露,嗯就是学习速度慢了,非常的不够,所以现学了一些.git目录的常用内容和涉及原理

这道题很明显有目录遍历的漏洞

提示可以访问.git目录,

1
2
3
4
5
6
7
8
9
10
11
.git目录结构:(目录遍历的时候注意大小写)
$>tree -L 1
.
|-- HEAD # 这个git项目当前处在哪个分支里
|-- config # 项目的配置信息,git config命令会改动它
|-- description # 项目的描述信息
|-- hooks/ # 系统默认钩子脚本目录
|-- index # 索引文件
|-- logs/ # 各个refs的历史信息
|-- objects/ # Git本地仓库的所有对象 (commits, trees, blobs, tags)
`-- refs/ # 标识你项目里的每个分支指向了哪个提交(commit)。

然后获得了这么一串内容:(不一定要列举,可以直接一次性执行)

1
../.git/config ../.git/HEAD ../.git/index(递归下载此目录下的所有对象)

利用git扫描工具,获得git目录的内容

.git泄露原理:

.git的目录可以保留一些版本变化的内容,我们需要去查看历史版本内容去获取上传的一些内容的保留,比如说管理员原本密钥什么的

说得具体一点:假如工程师在测试登入功能时,将admin 的帐密纪录在程式的注解中,并使用git 纪录到历史版本中,当工程师不小心上传.git,并且没有做权限控管,那么骇客就能从泄漏的.git 目录中拿到帐密;

除此之外,还能对.git目录执行写入,覆写的作用

实际上找文件内容也是看经验之谈的类型:

这里的学习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Git 储存资料的位置
由于git 版本不断更新,有些资料、目录位置、内容可能也会改变,我把一些目前搜集到的资讯汇整

一般来说,只要网址/.git 可以看到东西,基本上就能将程式还原,但是有时候网址输入/.git 会出现403 (「无权」访问指定的URL而非「档案不存在」,代表.git 目录可能是存在的,你可以尝试/.git/config,看他有没有挡),或是用其他方式拿到.git 的资料,例如下载(参考资料)

網址/.git/logs/HEAD 储存git 的log,可以找到历史commit

網址/.git/refs/heads/master会记录master 的commit hash,可以分解出该commit 的资料

網址/.git/refs/heads底下会放所有分支的名字资料夹

網址/.git/refs/stash 用于暂时保存git 工作进度,可以把做到一半的东西先藏起来(stash),不要commit 出去

git stash list 显示stash 内的所有内容
git stash pop 把刚刚做到一半存在stash 的资料还原
網址/.git/info/packs packs 的件提取与恢复(比较少考)

網址/.git/index会储存git add 的资料

.git目录下的master文件夹

使用的命令是gitkgit log

campus_one

miss-input

mole-in-the-wall

Icon
致谢名单
本作品由 LwhalE 于 2026-01-22 12:52:27 发布
作品地址:2026 Scarletctf
除特别声明外,本站作品均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 LwhalE's blog
Logo