web1 -20(信息搜集)
git泄露:(1)就是普通的git log/diff /reset --hard(恢复)/ 直接dirsearch扫描发现git
(2)git stash开发中断保存命令 git checkout <> 切换分支 切回然后 git stash pop恢复保存
svn泄露:和git差不多(/.svn/entries可查看目录文件追溯源码,老版本.svn/text-base;新版本pristine目录下有源码备份,都查不到的话,有个wc.db其中有个NODES可以看路径信息恢复源码local_relpath和repos_path还有一个check文件内容的校验可用于定位缓存文件)
vim泄露:当编辑过程中异常退出可能会生成缓存文件/.index.php.swp(再次异常退出swo)
域名隐藏信息TXT里面可以储存任意文本信息而且不会影响DNS解析,域名解析在线记录工具Nslookup(在线)

扫描到editor访问得到如上图页面

php探针:PHP探针是一种用于探测服务器和PHP环境信息的工具。它可以实时查看服务器的硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息。常用的又tz.php

backup.sql :备份sql文件

如果分数大于100输出:.......去解码一下

访问110.php(谐音梗)


AES解密出来

mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。
mdb文件是早期asp+access构架的数据库文件,早期asp+access具有漏洞,一旦被扫描到目录下的存在mdb文件,攻击者可以直接访问地址进行下载获取 数据库 信息。 直接查看url路径添加/db/db.mdb 下载文件通过txt打开或者通过EasyAccess.exe打开搜索flag
这里我不太认得EasyAccess.exe是干嘛的去搜了一下,这是一个第三方数据库管理工具,专门用来编辑查看Access数据库(.mdb文件:是二进制格式记事本直接打开是乱码,看不到结构化数据)

这个好在flag没有乱码
欢乐赛
我是真觉得活腻歪了可以看看这个题,做了几个觉得太抽象了,就去刷CTFSHOW的web了
热身签到
s = "54515552545455515456547055555566545654495548554855575370515051485150515453705555545755525456537054515551515051485150515450495568"
decoded = ''
for i in range(0, len(s), 2):
num = int(s[i:i+2])
decoded += chr(num)
print(decoded)
就是没两位合成16制码,然后解码得到flag

HappySong
算了这种题我的脉冲导出不了不过多纠结,最后导出二进制文件然后解码

happy2026

https://97d15cb0-8ab1-4ff3-8f12-d67b94ef2f50.challenge.ctf.show/?year=2026&new[2026]=x&happy[x]=/etc/passwd
这道题先是弱比较再是强比较,is_numeric判断是数值还是字符数值,
if($year==2026 && $year!==2026 && is_numeric($year)){
include $happy[$new[$year]];
}
然后进行数组传递,先将$year当作key值传递到得到变量new中,然后再将得到的值当作key传到happy中,然后将得到的值进行文件包含,这是一个动态赋值,数组的键和值都是一样的只要保持键和前面保持一直就行,

伪协议获取flag.php源码解码得到flag(要获取php文件源码而不是执行后的就要用到伪协议)
happyEmoji
这道题不知道哪个神人出的,分四个转速,并且四个一组然后分析出四进制,然后根据转到不同的位置像素不同,写脚本进行像素提取得到base64解码得到flag,反正我写不来看看得了
大佬脚本小弟膜拜膜拜
from PIL import Image, ImageSequence
import math
# ================= 配置区 =================
GIF_PATH = 'C:/Users/tsddd/Downloads/HappyEmoji/flag.gif'
FRAME_INDEXES = [3, 34, 65, 96] # 从 1 开始计数
BLOCK_H = 42
BLOCK_W = 61
GAP_H = 10
TARGET_Y = 15
TARGET_X = 34
SHIFT_X = 5 # 向右平移 5 像素
# =========================================
COLOR_MAP = {
(191, 175, 143): 0,
(255, 223, 127): 2,
(255, 239, 111): 1
}
STRIDE_H = BLOCK_H * 4 + GAP_H
def shift_image_right(img, shift):
"""整张图向右平移 shift 像素"""
w, h = img.size
new_img = Image.new('RGB', (w, h), (0, 0, 0))
new_img.paste(img, (shift, 0))
return new_img
def decode_image(img):
width, height = img.size
pixels = img.load()
cols = math.ceil(width / BLOCK_W)
groups = math.ceil(height / STRIDE_H)
decoded_chars = []
for group in range(groups): # 从上到下
for col in range(cols): # 从左到右
digits = []
for i in range(4):
base_x = col * BLOCK_W
base_y = group * STRIDE_H + i * BLOCK_H
x = base_x + TARGET_X
y = base_y + TARGET_Y
if x >= width or y >= height:
value = 3
else:
pixel = pixels[x, y]
value = COLOR_MAP.get(pixel, 3)
digits.append(str(value))
base4 = ''.join(digits)
if any(c not in '0123' for c in base4):
decoded_chars.append('?')
else:
decoded_chars.append(chr(int(base4, 4)))
return ''.join(decoded_chars)
# ================= 主流程 =================
gif = Image.open(GIF_PATH)
final_result = []
print('==== GIF 帧解码 ====')
for idx in FRAME_INDEXES:
frame_no = idx - 1 # 转为 0-based
gif.seek(frame_no)
frame = gif.convert('RGB')
# 右移 5 像素
shifted = shift_image_right(frame, SHIFT_X)
decoded = decode_image(shifted)
print(f'\n帧 {idx} 解码结果:')
print(decoded)
final_result.append(decoded)
print('\n==== 最终拼接结果 ====')
print(''.join(final_result))

这道题一开始被随波逐流诈骗了,不过确实有疑点

他告诉我包含NTFS数据流,我尝试用命令行提取一下zip文件和gif文件都包含NTFS数据流,按理说如果从网页上下载zip,然后本地解压gif文件只有可能zip文件包含NSTFS数据流,但是gif也包含,gif里面的就很有可能是手动或添加的,里面极有可能包含flag信息,但另一个奇怪的是他的url又指向本地zip文件的地址,这是NFTS数据流得基本格式
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://ctf.show/
HostUrl=https://ctfshow-1257200238.cos.ap-shanghai.myqcloud.com/static/file/HappyEmoji.zip
都学了知识点就补充一下吧
Zone.Identifier 是NTFS文件系统中的一个备用数据流
- ZoneId**:这是最核心的部分,代表文件的来源区域** 。常见的值有:
- 3**:表示文件来自** 互联网(Internet Zone) ,这是最常见的情况。
- 0**:本地计算机**
- 1**:本地Intranet**
- 2**:受信任的站点**
- 4**:受限制的站点**
- ReferrerUrl****和 HostUrl**:记录文件是从哪个网页下载的,以及实际下载链接的URL**
SafePIN

这个题也比较抽象,我想的是将附件和0-9都用这个打开进行对照然后得出音频所代表的数字。因为本人听不出来,脚本也不会搓,爆破肯定行不通因为试的多了会冷却
6666放弃了这都什么神人题目、
Trae-mcp
当时配的时候忘记记录一下,但是主要参考了这位佬的博客https://blog.csdn.net/m0_67581821/article/details/147853296?fromshare=blogdetail&sharetype=blogdetail&sharerId=147853296&sharerefer=PC&sharesource=2401_88743143&sharefrom=from_link