WP_CTFshow_web 1-20 信息收集
web1
“一个简单的base64解码(自信)”
web2
网页无法查看源代码(js前台拦截)简单两个:
快捷键ctrl+U或者view-source:
1 | view-source:https://xxx |
“read://不行,这tim叫阅读模式”
web3
源码中无,于是用bp抓包,截获响应报文。发现自定义响应头Flag,报文部分如下:
1 | 200 OK |
web4
“后台地址写入robots”是指在网站根目录下存放一个robots.txt文件,示例如下。作用是告诉搜索引擎爬虫(Google、百度…)哪些目录或文件不允许抓取。也一定程度省去了目录扫描这一环节。
1 | User-agent: * |
于是访问:
1 | url/robots.txt |
deepsleep说是程序员常识,我枯了qwq
web5
访问url/index.phps才能看见源码a
据说是开发人员想把某个PHP文件的源码公开给学习者查看,他们才会用 .phps 扩展名?我就当s是study了.
下载index.phps并打开得到flag(注释里)
1 | //ctfshow{ea40618a-369f-4f6a-a4ce-d2de54ce3157} |
web6
又来一常识:备份整个网站时,直接打包这个目录,这个文件通常是www.zip 或者www.tar.gz,访问url/www.zip下载得到源码
1 | ... |
web7
直接访问url/.git如果返回文件/目录列表,说明存在git泄露
.git下常见文件/目录:
| 文件/目录 | 存放内容 | 泄露的风险等级 |
|---|---|---|
HEAD |
当前指向的分支 | 低(确认默认分支名) |
config |
仓库的配置信息(可能包含远程仓库地址、用户名、邮箱,极少见但也可能包含代理或凭证) | 中(暴露开发环境配置) |
index |
暂存区(记录了下一次提交将要保存的文件快照的二进制索引) | 中(可解析出当前改动的文件列表) |
refs/heads/ |
所有本地分支的最新一次提交的 commit hash(如 main、dev 分支的指针) | 高(暴露所有分支的存在) |
logs/ |
完整的操作日志(谁、什么时候、执行了什么 git 命令、从哪个 commit 切换到哪个 commit) | 极高(暴露开发者习惯、邮箱、甚至讨论片段) |
objects/ |
Git 的核心对象库。所有文件的历史版本(被压缩和加密存储,但可提取)都存放在这里 | 极高(可以还原出网站上线前的原始代码、配置文件、被删除的密码) |
web8
直接访问url/.svn如果返回文件/目录列表,说明存在svn泄露
svn(subversion)和 git 不同,它没有 objects 这种压缩存储,而是直接在工作副本的 .svn 目录中保留文件副本,导致泄露更直接。
| 文件/目录 | 存放内容 | 泄露风险 |
|---|---|---|
entries |
列出当前目录下所有文件的原始文件名、版本号、时间戳、MD5等元信息 | 极高(直接暴露文件列表和版本) |
text-base/ |
文件的原始副本(.svn-base 格式)。比如 index.php 的原始版本存在这里 |
极高(直接下载源码,无需解析) |
prop-base/ |
文件的属性 | 低 |
tmp/ |
临时文件,可能包含正在操作的文件内容 | 中 |
wc.db(SVN 1.7+) |
SQLite 数据库,记录了整个工作副本的状态 | 极高(包含所有文件路径和版本信息) |
web9
程序异常终止(死机),导致临时文件(如交换文件 .swp)没有被正常清理,从而造成源码泄露。
访问
1 | url/.index.php.swp |
用过vim,不知道他的工作原理,查一下资料:
vim 是一个内存中的文本编辑器。它改的是内存里的副本,而不是直接改硬盘上的原文件。四步走:
1.打开文件:vim index.php,vim将 index.php 的内容从硬盘加载到内存中。此时,硬盘上的 index.php 没有变化。
2.编辑过程:在 vim 里按 i进行编辑,但所有的修改都只发生在内存里的副本上。
3.保存:输入 :w,vim将内存中的内容写回硬盘,覆盖原文件index.php。
4.退出:输入 :q,vim 释放内存,进程结束。只要不执行 :w,修改的任何内容都不会影响硬盘上的原始文件。
.swp 是 swap file 交换文件,为了解决断电、崩溃导致的内存丢失问题。vim在一打开文件时,就自动在同一目录下创建一个临时的、隐藏的交换文件,如 .index.php.swp
1.vim index.php,立即创建.index.php.swp,记录当前状态。
2.每隔几秒(默认4秒或200个字符),vim 自动将内存中的修改同步写入.swp文件。
3.执行:w,主动保存到index.php,此时.swp不会被删除。
4.执行:q,正常退出。vim 认为任务完成,自动删除.index.php.swp
.swp 文件包含:
原始文件的内容(打开时的快照)
所有的修改历史(包括撤销树、插入的字符、删除的行)
文件状态(光标位置、是否开启了插入模式等)
文件权限和时间戳
web10
bp抓包,简简单单,url解一下
1 | Set-Cookie: flag=ctfshow{0a8c7e63-e89c-4a91-b73b-a754ebd8f995} |
web11
去阿里云 https://boce.aliyun.com/detect/dns 创建DNS解析,域名flag.ctfshow.com,解析类型为txt记录(动态变更,知道原理就好,不要纠结)
web12
不知道后台地址,猜一个/admin。用robots.txt可验证。账号admin,密码是help line number
web13
找技术文档
看了半天blog,结果页面最下方有个document能点进去qwq
web14
“好好好,这个题目开始有点意思了”
已知:”某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录。有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人”
关键词:编辑器editor、遍历根目录(猜测flag放在根目录某个路径下)、源码信息
看不懂、没办法,只能一步一步来:
1.打开index页面,查看源码,竟然有900行。可恶.
检索 “editor” ,发现一条匹配如下
1 | <img src="editor/upload/banner-app.png" alt="App"> |
看起来是一个editor编辑器上传文件的存放路径,访问看看
一张平平无奇的图片,于是回退/editor/upload,结果403,那我再回退/editor
各个按钮尝试了下,感觉flag不在这儿。思路断了,再找呗,扒editor网页源码
发现编辑器是KindEditor
upload_json.php加载发现是空白页(这题应该不是用文件上传漏洞解决的)
⭐注意到filemanager文件目录浏览功能启用,于是访问url/editor/php/file_manager_json.php,显示如下
很神奇,这里报错了,但是成功扫描了服务器根目录scandir(/root)(下面一长串中找到filename = /bin /etc /var 确认是服务器根目录)
查资料得知file_manager_json.php的代码核心逻辑:
1 | // 1. 定义根目录路径(kindeditor默认配置) |
kindeditor会先尝试cd到自己的工作目录./attached,但是!!由于这个目录并不存在,realpath() 会返回 false。而这个漏洞的关键就在于:当 realpath() 返回 false 时,程序没有正确处理,导致 $current_path 变成了一个空字符串或者 /,从而让 scandir()读取了系统根目录。
这与题干呼应。“某编辑器最新版默认配置下,如果目录不存在,则会遍历服务器根目录”
从报错信息可以发现完整路径,如下,确定站点根目录为nginx默认/var/www/html
1 | /var/www/html/editor/php/file_manager_json.php |
下面利用这个.php找到隐藏的flag
回到上面php代码,发现参数传递过程是通过 PHP的超全局变量 $_GET 来接收的。
$_GET 是一个数组,专门用来收集通过?key=value形式传递的数据。$_GET['path'] 就是获取名为 path 的参数值。因此将path的值赋为“/var/www/html/”,并通过http协议中url的查询字符串,向服务器端的php进行参数传递。
即访问:
1 | url/editor/php/file_manager_json.php?path=/var/www/html/ |
发现可疑目录
继续访问:
1 | url/editor/php/file_manager_json.php?path=/var/www/html/nothinghere/ |
进去发现是fl000g.txt
好了最后一步:
1 | url/nothinghere/fl000g.txt |
偷偷看了官方wp,竟然如此简单!editor界面暗藏玄只因。第二行有个回形针图标,点开“文件空间”竟然可以查看整个服务器目录,我就说搞这么多图标干嘛,好的我眼瞎OK
web15
发现网页底部有个QQ邮箱。fuzz后台登陆地址为url/admin
题目既然说邮箱信息泄露,先猜下账号密码。然鹅不行,bp爆破了下,不在常用字典中。忘记密码试试?于是土方法手机QQ加好友,发现人家个签写着住在西安。兄弟你是真性情.jpg | flag到手
web16
【new】“php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡 流量、系统负载、服务器时间等信息。url后缀名添加/tz.php 版本是雅黑PHP探针,然后查看phpinfo搜索flag”
开发者工具,但是没删除,可以作为目录扫描的参考。查资料补充一点常见探针名:
一、通用默认探针名
这是最基础、最常见的一类,通常开发者或扫描器会优先使用这些名字。
| 文件名 | 说明/来源 |
|---|---|
tz.php |
雅黑PHP探针,非常经典,在CTF题中常见。 |
x.php |
X探针(也叫刘海探针),也是开源项目中常用的名字。 |
prober.php / probe.php |
通用探针名,含义直接。 |
phpinfo.php |
PHP标准信息页,最基础的探针,直接暴露 phpinfo() 信息。 |
info.php / test.php |
开发人员临时测试时最常用的名字,极易被忽略而泄露。 |
1.php / 2.php |
极其随意的命名,但扫描器字典中常有。 |
二、特定名称的探针
这些探针往往来自特定的开源项目,有一定知名度。
| 文件名/关键词 | 对应的探针项目 |
|---|---|
l.php |
有时作为LAMP探针的简写。 |
iProber.php |
一款经典的PHP探针。 |
9gan.php |
部分较早的探针程序。 |
kodexplorer |
可道云WorkSpace,虽然是文件管理器,但也常被利用来获取信息。 |
phpMyAdmin |
数据库管理工具,其setup目录或特定文件会泄露路径信息。 |
三、按功能分类的其他探测文件
除了显示PHP信息的探针,还有一些用于探测特定功能或路径的文件。
| 类型 | 常见文件名 | 用途/风险 |
|---|---|---|
| 配置探测 | .env, config.php.bak, config.inc |
探测配置信息,可能泄露数据库密码、密钥等。 |
| 环境探测 | server-status (Apache) |
Apache服务器状态页,可能泄露访问请求和连接信息。 |
| 代码执行探测 | hello.php, shell.php |
攻击者上传的用于验证代码执行的小马。 |
| 目录遍历探测 | test.txt, test.html |
用于测试是否存在目录遍历漏洞。 |
web17
明示了,是数据库备份,找backup.sql
web18
网页小游戏。扒一下源码,找到控制游戏的js代码:
分数>100
赛博厨子跑一下
110.php 谐音梗,扣钱🙌
web19
扒一下源码,好家伙,加密算法全部放在前端了,搁这裸奔呢?
调用了这几个现成的加密函数,明显是aes对称加密
敢把密钥和随机数放这儿
1 | key = "0000000372619038"; |
用的CBC模式,块链接加密
可以看出用户名admin是明文存储的,密文以一串16进制数存储,加密算法有了,拿厨子跑一下:
好家伙,我也要!
web20
查资料,asp就是早期架构的php,常常与微软自己的access数据库(.mdb)组合使用
找一下常见目录,一个一个试
| 文件名 | 常见路径 |
|---|---|
data.mdb |
/data.mdb, /database/data.mdb, /db/data.mdb |
db.mdb |
/db.mdb, /database/db.mdb, /db/db.mdb |
database.mdb |
/database.mdb, /data/database.mdb |
*.bak |
/db.bak, /database.bak, /data.bak |
最后发现是/db/db.mdb,没有easyaccess,拿notepad++看,成功拿到
到这里信息收集就做完了,确实简单。主要是几个思路:
1、漏洞利用:源码/算法泄露、robots目录、网站/数据库备份泄露、git泄露、svn泄露、swp临时文件、editor编辑器默认配置目录遍历、php探针
有些是本身就有的漏洞,大部分是程序员大意了没有闪。
2、fuzz爆破:后台地址、手动目录扫描
3、社会工程学:技术文档涉密(blog/document)
4、其他:bp抓包、域名txt解析
所以接着奏乐,接着搓😎

















