CTF SHOW

Web 1~17

总的来说,信息搜集首先需要经历扫盘,F12,抓包三大件

注意结合题目

Web1

F12

Web2

本质是js前台拦截,无法呼出右键菜单,也无法使用f12

  1. url前加入view-source:查看源代码
  2. ctrl+u查看源码
  3. 打开一个空白网页,按F12,再把网址复制进去并回车
  4. bp抓包,放到repeater中

Web3

  1. 使用bp抓个包看看

  2. f12—网络——刷新——查看消息头

Web4

扫目录得到敏感文件robots.txt

1
dirsearch -u https://bc86a6ed-f331-45f2-a6d2-6079ed4ba162.challenge.ctf.show -e* -i 200,201,201-300 -t 30
image-20250309220604925

查看robots.txt

1
https://bc86a6ed-f331-45f2-a6d2-6079ed4ba162.challenge.ctf.show/robots.txt
image-20250309220749006

查看flagishere.txt

1
https://bc86a6ed-f331-45f2-a6d2-6079ed4ba162.challenge.ctf.show/flagishere.txt

得到flag

Web5

phps文件泄露

phps文件就是php的源代码文件,通常用于提供给用户(访问者)直接通过Web浏览器查看php代码的内容

因为用户无法直接通过web浏览器看到php文件的内容,所以需要用phps文件代替。用户访问phps文件就能看到对应php文件的源码

phps通常作为备份文件。其他常见的有linux的备份文件,比如index.php.swp,还有www.zip等

可使用工具:

https://github.com/shanyuhe/fzbk

或者burp打一波fuzz

https://github.com/3had0w/Fuzzing-Dicts/blob/master/%E5%B8%B8%E8%A7%81%E7%BD%91%E7%AB%99%E5%A4%87%E4%BB%BD%E6%96%87%E4%BB%B6%E5%AD%97%E5%85%B8%EF%BC%882954%EF%BC%89.txt

思路

并不能看到网页源码,盲猜有phps的事儿,使用dirsearch扫目录能扫到index.phps(有人说扫出来了但我扫不出来)

url后加上/index.phps查看源码

1
2
3
4
5
6
7
8
9
10
11
12
<?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{fc679ea6-d6b2-4715-bf93-5257f91fd750}
echo "web5:where is flag ?"

Web6

www.zip泄露

Web7

标题一眼git泄露

git init初始化时,会在当前目录下自动创建一个.git目录用来记录代码的变更记录等。发布代码的时候,如果没有把这个.git删除,就直接发布到了服务器上,攻击者就可以通过它来恢复源代码

Web8

通过dirsearch扫目录得出是svn泄露

image-20250309225706862

SVN是一个开放源代码的版本控制系统,在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用”导出“功能,而是直接复制代码文件夹道WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码

Web9

dirsearch没扫出来,但是题目提示很清楚

直接访问index.php.swp

在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除。当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容。

以 index.php 为例:

第一次产生的交换文件名为 .index.php.swp
再次意外退出后,将会产生名为 .index.php.swo 的交换文件
第三次产生的交换文件则为 .index.php.swn

Web10

抓包,信息头中cookie里有

Web11

有时候域名地址会包含某些信息

如 flag.ctfshow.com

1
2
3
4
5
6
7
8
9
查询域名解析地址 基本格式:nslookup host [server]

查询域名的指定解析类型的解析记录 基本格式:nslookup -type=type host [server]

查询全部 基本格式:nslookup -query=any host [server]

nslookup -query=any flag.ctfshow.com
服务器: public-dns-a.baidu.com Address: 180.76.76.76
非权威应答: flag.ctfshow.com text = "flag{just_seesee}"

Web12

扫盘的到以下

image-20250310091841160

进入admin页面,发现需要登录账号和密码。账户不必多说为admin,密码根据题目提示,在网站主页中,根据猜测为下方的一个不寻常的电话热线

Web13

document技术文档信息泄露

image-20250310092820855

点开document后得到以下

image-20250310093014910

注意your-domain是你的靶场域名

Web14

扫盘得到/editor/

发现其中插入文件的文件空间是本地文件

image-20250310094639676

首先看这个网页 var/www/html

发现有个文件夹nothinghere

点开看有fl000g.txt

所以只需要在靶场url后加上/nothinghere/fl000g.txt即可

Web15

气笑了

扫盘得到admin后台登录页面

账号默认admin,发现有个忘记密码

通过查询主页给出的qq账号得出所在地是西安,于是重置密码了

Web16

探针泄露

php探针是用来探测空间、服务器运行状况和PHP信息用的,探针可以实时查看服务器硬盘资源、内存占用、网卡流量、系统负载、服务器时间等信息

默认探针为tz.php

进入探针,找到PHP信息(phpinfo)

image-20250310130431844

在环境变量中找到flag

image-20250310130459383

Web17

扫盘得到敏感文件backup.sql

访问后下载文件,打开后得到flag

Web18

界面是一个经典红温小游戏

我们查看它的js代码

发现通关条件为game_over=true&&score>100

所以我们只需要打开F12,在控制台中输入相应信息,再运行游戏即可

image-20250310132821579

得到提示

image-20250310132857228

进去就是flag

(但我发现,得到的内容是个文件路径,在js脚本中是unicode形式,找到源码了直接把unicode编码变成中文即可)

Web19

看到这种登录界面首先想到的是sql注入啊,不过这里是POST方法,所以暂时抛弃

查看源码,发现一段隐藏脚本

1
2
3
4
5
6
7
8
9
error_reporting(0);
$flag="fakeflag"
$u = $_POST['username'];
$p = $_POST['pazzword'];
if(isset($u) && isset($p)){
if($u==='admin' && $p ==='a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04'){
echo $flag;
}
}

这么长一串应该是加密了,都在0~f所以应该是十六进制ASCII码

其实这个是AES加密,因为不仅是十六进制而且还是32个十六进制数(16字节,128位)

源码可见:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 function checkForm(){
var key = "0000000372619038";
var iv = "ilove36dverymuch";
var pazzword = $("#pazzword").val();
pazzword = encrypt(pazzword,key,iv);
$("#pazzword").val(pazzword);
$("#loginForm").submit();

}
function encrypt(data,key,iv) { //key,iv:16位的字符串
var key1 = CryptoJS.enc.Latin1.parse(key);
var iv1 = CryptoJS.enc.Latin1.parse(iv);
return CryptoJS.AES.encrypt(data, key1,{
iv : iv1,
mode : CryptoJS.mode.CBC,
padding : CryptoJS.pad.ZeroPadding
}).toString();
}
1
2
3
4
5
密钥为key = "0000000372619038";
偏移量为iv = "ilove36dverymuch";
模式为CBC
填充为ZeroPadding
编码为Hex

但还没学AES,有没有什么不吃操作的

有的有的

  1. 使用bp抓包修改POST参数
  2. 使用hackbarPOST传参

内容为:username=admin&pazzword=a599ac85a73384ee3219fa684296eaa62667238d608efa81837030bd1ce1bf04

Web20

使用dirsearch递归搜索,发挥最佳性能

image-20250310134850993

查看/db/db.mdb

flag就在其中

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