首页/文章/CTF WEB

CTF show web 入门信息搜集

对于信息搜集板块的简单学习

学习不是为了征服世界,而是为了不辜负每一次好奇心的出发。

01

html
<!--# -*- coding: utf-8 -*-# @Author: h1xa# @Date:   2020-09-01 13:45:32# @Last Modified by:   h1xa# @Last Modified time: 2020-09-02 03:12:48# @email: h1xa@ctfer.com# @link: https://ctfer.com-->

这是注释,由 <!-- -->包裹

alt text

这是浏览器插件注入的脚本

html
<head><meta charset="utf-8"><title>CTFshow 新手入门题目 </title><script type="text/javascript"></script></head><body>	<h3>web1:where is flag?</h3>	<!-- ctfshow{e868627c-3ef5-4359-9729-5dc2cb68bae5} -->

head 是网页的头部信息,是给浏览器看的,比如字符编码,网页标题,CSS 样式,JavaScript 脚本等
比如 <meta charset="utf-8">是告诉浏览器以中文编码展示,不然一些中文可能会乱码
<title>CTFshow 新手入门题目 </title> 这是标题,一般显示在标签页上,而不是在正文里面。

html
<script type="text/javascript"></script>

这是 JavaScript 代码,里面是 JavaScript 写的
body 是网页主体区域,网页大部分内容都在这里展示。
<h3> 是三级标签标题

html
<h1>最大标题</h1><h2>二级标题</h2><h3>三级标题</h3><h4>四级标题</h4><h5>五级标题</h5><h6>最小标题</h6>

02

这次打开靶机,无法使用右键,和f12,尝试使用 bp 发送

html
GET / HTTP/1.1Host: f849a82b-6ba2-45df-918d-54aa6173fc73.challenge.ctf.showAccept-Language: zh-CN,zh;q=0.9Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflate, brConnection: keep-alive

请求方式是 GET ,路径是根目录 /,host 是发送请求的目标地址,accept language 是优先接受简体中文,user-agent 是让自己看起来像浏览器,accept 是告诉网站可以接收源码,图片等,可以接收压缩过的内容,connetion 是持续连接中。 返回

html
<!--# -*- coding: utf-8 -*-# @Author: h1xa# @Date:   2020-09-01 13:45:32# @Last Modified by:   h1xa# @Last Modified time: 2020-09-02 03:20:04# @email: h1xa@ctfer.com# @link: https://ctfer.com--><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>CTFshow 新手入门题目 </title><script type="text/javascript">	window.oncontextmenu = function(){return false};	window.onselectstart = function(){return false};	window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};</script></head><body>	<h3>无法查看源代码</h3>	<!-- ctfshow{a508b81e-884f-46bb-b57e-ed6d4291f266} --></body></html>

可以看见 flag 在注释中,然后 js 禁用了window.oncontextmenu = function(){return false};右键菜单,window.onselectstart = function(){return false};禁止选择文字,还有 123 也就是 f12
为什么 bp 可以绕过,正常访问

text
浏览器发送 http 请求 -> 服务器返回信息 -> 浏览器解析 html -> 解析 js -> 执行 js

bp 则是

text
发送请求 -> 接受返回信息

当然这道题我们也可以直接 ctrl + shift + I console 输入 check = () => true

html
check  = func () {  return true;}

03

alt text

只能看见 body 内容,bp 抓包

http
HTTP/1.1 200 OKServer: nginx/1.20.1Date: Tue, 26 May 2026 14:43:52 GMTContent-Type: text/html; charset=UTF-8Connection: keep-aliveFlag: ctfshow{1d929059-54ee-42eb-b824-b9e228fe5a2a}X-Powered-By: PHP/7.3.11Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONSAccess-Control-Allow-Credentials: trueAccess-Control-Expose-Headers: Content-Type,Cookies,Aaa,Date,Server,Content-Length,ConnectionAccess-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-auth-token,Cookies,Aaa,Date,Server,Content-Length,Connection,OriginAccess-Control-Max-Age: 1728000Content-Length: 19web3:where is flag?

可以看见,浏览器是可以自定义响应头的

php
header("Flag: ctfshow{test}");echo "web3:where is flag?";
js
res.setHeader("Flag", "ctfshow{test}");res.end("web3:where is flag?");
python
@app.route("/")def index():    response = make_response("web3:where is flag?")    response.headers["Flag"] = "ctfshow{test}"    return response

对应的 http 就是

http
HTTP/1.1 200 OKContent-Type: text/htmlFlag: ctfshow{test}web3:where is flag?

常见藏 flag 包括

text
HTML 注释JavaScript 文件CSS 文件HTTP 响应头Cookie重定向 Locationrobots.txt备份文件源码泄露文件

04

题目描述

总有人把后台地址写入robots,帮黑阔大佬们引路

robots.txt 是一个位于 https://example.com/robots.txt 的文件,告诉爬虫哪些应该爬,哪些不该爬
例如:

txt
User-agent: *Disallow: /admin/Disallow: /backup/Allow: /
text
对所有爬虫:不要抓取 /admin/不要抓取 /backup/其他地方可以抓取

alt text

alt text

05

题目描述

phps源码泄露有时候能帮上忙

一般我们访问网站根目录时,浏览器不会返回 / ,而是返回 /var/www/html/index.php,寻找可能的默认首页配置文件,有可能是

text
index index.html index.htm index.php;

假设某网站

text
网站根目录/├── index.php├── about.php├── login.php└── robots.txt

当我们访问

text
GET / HTTP/1.1Host: example.com

于是自动找

text
/index.php

并返回给我们

alt text

http
<?php/*# -*- coding: utf-8 -*-# @Author: h1xa# @Date:   2020-09-01 14:14:17# @Last Modified by:   h1xa# @Last Modified time: 2020-09-01 14:34:53# @email: h1xa@ctfer.com# @link: https://ctfer.com*///ctfshow{db003eef-965f-4879-af9c-eb0b7c852e2d}echo "web5:where is flag ?"

phps 是服务器的配置文件代码,我们浏览器只能拿到代码返回的结果,看不见源码,而有些时候由于浏览器可能会解析成 text/html,所以我们最好还是 按 ctrl + u可以看见源代码

06

题目描述

解压源码到当前目录,测试正常,收工

根据提示,我们可以知道源码压缩包可能就在网站的某一处路径中,我们拿到源码压缩包,就大致知道了网站的目录结构,或者一些关键的配置文件
扫描结果如下

alt text
alt text
打开

txt
flag{flag_here}

访问

text
http://ba99f381-4731-4f39-8ed2-28969384fbfe.challenge.ctf.show/fl000g.txtctfshow{29217994-ad18-4151-99d4-d8338c3e7993}

07

题目描述

版本控制很重要,但不要部署到生产环境更重要。

根据提示,可能是 .git 泄露 扫描

alt text
访问 http://8234be8e-2790-401d-9c9d-f5265343f299.challenge.ctf.show/.git/ ctfshow{c07b81fe-662e-4095-a487-179798bb0512} 注意的是,在 bp 中要请求 /.git/ 而不是 /.git

08

题目描述

版本控制很重要,但不要部署到生产环境更重要。

alt text

访问后拿到 flag ctfshow{219a8159-35c6-4522-bf2f-747f40a36b8a} 什么是 .svn ? .svn 是Subversion / SVN 版本控制工具在项目目录里生成的隐藏目录,类似 Git 项目里的 .git .svn 用来保存版本控制相关信息,比如

text
文件版本信息仓库地址提交记录相关数据本地工作副本状态部分源码缓存

常见探测路径

text
/.svn//.svn/entries/.svn/wc.db/.svn/all-wcprops

老版本常看

text
/.svn/entries

新版本

text
/.svn/wc.db

除了 .svn .git 还有 .hg

09

题目描述

发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了

Vim 编辑过程中如果异常退出、断电、终端断开、死机,可能会留下交换文件。 交换文件常见格式

text
.filename.swp.filename.swo.filename.swn

如果编辑 index.php 可能留下

text
.index.php.swp.index.php.swo.index.php.swn

alt text
访问

txt
ctfshow{da16c78f-8cac-4367-8296-5bd2bafc80cc}

010

题目描述

cookie 只是一块饼干,不能存放任何隐私数据

cookie 是浏览器为某个网站保存的文本数据,用于多次 http 请求之间维持状态 服务器设置 cookie

http
Set-Cookie: sessionid=abc123; Path=/; HttpOnly

下次浏览器访问同样网站,会带上 cookie

http
Cookie: sessionid=abc123

cookie 的基本结构

http
name=value
http
Cookie: username=guest; theme=dark; sessionid=abc123

多个 cookie; 分割
常见 cookie 属性

http
Set-Cookie: id=abc; Domain=example.com; Path=/; Expires=Wed, 27 May 2026 12:00:00 GMT; Secure; HttpOnly; SameSite=Lax

domain是访问哪些网站携带, path 是哪些路径携带 , expires 是过期时间,如果没有设置一般是会话 cookie ,关闭页面就消失,secure 是https ,HttpOnly 表示 JavaScript 不能通过 document.cookie 读取它,可以降低 XSS 窃取 Cookie 的风险。samesite 控制跨站请求是否携带 cookie ,常见设置

text
StrictLaxNone

Strict 最严格,跨站基本不带。 Lax 是较常用默认值,部分顶级导航请求会带。 None 表示跨站也带,但必须配合 Secure。

本题

请求可以看见 cookie

alt text

011

题目描述

域名其实也可以隐藏信息,比如flag.ctfshow.com 就隐藏了一条信息

什么是 DNS ?

DNS 是 Domain Name System,域名系统,作用是把人记住的域名转换成机器看的地址,例如:

text
www.baidu.com110.242.xxx.xxx

实际上访问域名的流程

text
输入 example.com浏览器查本地缓存如果没有,问本地 DNS 服务器本地 DNS 再去问根 DNS根 DNS 指向 .com DNS.com DNS 指向 example.com 的权威 DNS权威 DNS 返回最终记录电脑拿到结果

A 记录,解析域名到 IPV4 地址 AAAA 解析到 IPV6 CNAME 记录 指向另一个域名 MX 记录 表示域名由 mail.example.com 处理

本题

我们通过 https://zijian.aliyun.com/查询,或powershell

powershell
nslookup -type=TXT flag.ctfshow.com

012

题目描述

有时候网站上的公开信息,就是管理员常用密码

进去是个网站,没有登陆界面,访问 robots.txt

alt text

发现有 admin 访问 admin , 出现提交登陆表单,用户名尝试 admin ,密码尝试了这个数字
alt text

对了,拿到 flag
alt text

013

题目描述

技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码

扫路径没扫到,在网站底部有 docunment,下载后登陆后台输入账号密码即可

014

题目描述

有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人

根据描述对应的是编辑器默认配置泄露

text
/.editorconfig/.vscode//.vscode/settings.json/.vscode/launch.json/.vscode/tasks.json/.idea//.idea/workspace.xml/.idea/misc.xml/.idea/modules.xml/.idea/deployment.xml/.idea/dataSources.xml

这道题御剑扫出 editor

alt text
发现可以插入文件,在根目录有一个文件夹,访问拿到 flag

015

题目描述

公开的信息比如邮箱,可能造成信息泄露,产生严重后果

扫描发现路径 admin 访问后是个登陆界面,点击忘记密码,提问所在城市,在首页最下面有 qq 号,搜索发现在陕西西安,提交后得到密码

016

题目描述

对于测试用的探针,使用完毕后要及时删除,可能会造成信息泄露

什么是探针?

探针”是站长或开发者放到服务器上的一个测试页面,用来查看服务器环境是否正常,比如:

text
PHP 版本系统信息Web 服务器类型扩展模块环境变量网站根目录配置路径数据库扩展禁用函数

常见有

http
/tz.php/phpinfo.php/info.php/test.php/i.php/p.php

本题

访问 tz.php 发现

alt text
点击 phpinfo 找到 flag

017

题目描述

备份的sql文件会泄露敏感信息

alt text
扫出,下载

sql
CREATE DATABASE IF NOT EXISTS ctfshow;USE ctfshow;---- Table structure for table `products`--CREATE TABLE IF NOT EXISTS `products` (  `product_id` int(11) NOT NULL,  `name` varchar(100) NOT NULL,  `sku` varchar(14) NOT NULL,  `price` decimal(15,2) NOT NULL,  `image` varchar(50) NOT NULL,  PRIMARY KEY (`product_id`),  UNIQUE KEY `sku` (`sku`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;CREATE TABLE `ctfshow_secret` (  `secret` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `ctfshow_secret` VALUES ('ctfshow{7e11b109-1b7e-4e0a-9754-7f2d1053bb11}');---- Dumping data for table `products`--INSERT INTO `products` (`product_id`, `name`, `sku`, `price`, `image`) VALUES(1, 'Iphone', 'IPHO001', '400.00', 'images/iphone.jpg'),(2, 'Camera', 'CAME001', '700.00', 'images/camera.jpg'),(3, 'Watch', 'WATC001', '100.00', 'images/watch.jpg');

018

题目描述

不要着急,休息,休息一会儿,玩101分给你flag 看了 js 源码,发现有 score ,直接控制台更改 score

alt text
根据提示拿到 flag

019

题目描述

密钥什么的,就不要放在前端了

alt text
可以看见是需要先进行解密
alt text

提交后拿到 flag

020

题目描述

mdb文件是早期asp+access构架的数据库文件,文件泄露相当于数据库被脱裤了。

扫出 /db/db.mdb 下载打开后拿到 flag

许可协议

本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。

读者回信

正在翻开留言页...