当前位置: 首页 > news >正文

CTF Web信息搜集 25000字详解

目录

  • 前言
  • 信息收集
    • 常见信息
    • 分类
      • 域名信息
        • whois
        • 备案
        • CDN
        • 子域名
        • 解析记录
      • 旁站
      • C段
      • 服务器信息
        • 端口
        • 服务器类型
        • 数据库类型
        • waf防火墙
      • 网站信息
        • 备份文件
          • 备份文件常见的后缀名
          • 备份文件常见的文件名
          • gedit备份文件
          • vim备份文件
          • 收集方法
        • 敏感目录
        • CMS类型(指纹识别)
        • 探针泄漏
      • 谷歌hacker
      • 源码泄露
        • git 源码泄露
        • SVN 源码泄露
        • hg源码泄漏
        • CVS泄露
        • Bazaar/bzr泄露
        • DS_Store 文件泄露
    • http状态码
  • ctfshow web1-20
    • web1(注释)
    • web2(JS禁用F12)
    • web3(响应体)
    • web4(robots.txt)
    • web5(phps源码)
    • web6(备份文件)
    • web7(git泄漏)
    • web8(svn泄漏)
    • web9(vim备份)
    • web10(cookie)
    • web11(域名解析记录)
    • web12(社工)
    • web13(技术文档)
    • web14(网页编辑功能泄漏)
    • web15(社工)
    • web16(php探针)
    • web17(sql备份)
    • web18(查阅js源码)
    • web19(密码泄露)
    • web20(mdb泄漏)
  • 从0到1
    • 常见的搜集(robots、vim、gedit)
    • 粗心的小李(git泄漏)
  • CTFHUB 信息泄漏
    • 目录遍历
    • PHPINFO
    • 备份文件下载
      • 网站源码
      • bak文件
      • vim缓存
      • .DS_Store
    • Git泄漏
      • Log
      • Stash
      • Index
    • SVN泄漏
    • HG泄漏

前言

这段时间开始入门Web,主要是为了在线下赛不那么坐牢

Web的知识还是挺多的,所以需要成体系的学习

每学完一个方面我会写一篇总结性文章,将知识点与例题放在一起,方便后面查阅

如果之后学的更加深入或者遇到什么有代表性的题目,也会添加到文章中

信息收集

渗透的本质是信息收集,信息收集也叫做资产收集。

信息收集是渗透测试的前期主要工作,是非常重要的环节,收集足够多的信息才能方便接下来的测试,信息收集主要是收集网站的域名信息、子域名信息、目标网站信息、目标网站真实IP、敏感/目录文件、开放端口和中间件信息等等。通过各种渠道和手段尽可能收集到多的关于这个站点的信息,有助于我们更多的去找到渗透点,突破口。

常见信息

搜集方面作用
whois得到域名注册人的信息:邮箱、电话号码、姓名
子域名可以扩大攻击范围,子域名一定是有关联的,很多时候基本上都同属一个公司
端口探测危险端口可以直接爆破入侵,一个Ip可能搭建了多个网站,分布在不同的端口
目录扫描目录扫描有的时候可以访问到压缩包源码、编辑器目录、废弃页面、其他站点
指纹识别识别CMS,寻找通杀漏洞
旁站查询旁站其实就是同IP站点,一定和目标站点在同一个内网或者是同一台服务器
C段查询C段可能是同一个内网,同一个公司
内容敏感信息泄露通过谷歌语法得到其他的东西

分类

域名信息

whois

概述

whois(读作“Who is”,非缩写)是用来查询域名的IP以及所有者等信息的传输协议。简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商)

收集方法

  • http://whois.chinaz.com/
  • https://www.whois.com/
  • VirusTotal - Home
备案

概述

网站备案也算是中国互联网的一大特色了

非经营性网站备案(Internet Content Provider Registration Record),简称ICP备案,指中华人民共和国境内信息服务互联网站所需进行的备案登记作业。

如果某网站申请了ICP备案,那么就能通过查询备案可以获取备案人的大量信息

收集方法

  • ICP备案查询网 - 网站备案查询 - 工信部域名备案查询实时数据 (beianx.cn)
  • ICP备案查询_备案号查询_网站备案查询 - 天眼查 (tianyancha.com)

注意事项

一些个人网站底部贴的备案号很有可能是假的,或从其他站点复制过来的。所以查询备案信息时尽量通过域名来直接查询。

CDN

概述

內容分发网络(英语:Content Delivery Network或Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

正好在我的博客R1ck’s Portal中,也使用到了这种内容分发网络服务,所以对它的作用的体会非常深刻。

在很大程度上,CDN能抵御像DDOS之类的攻击,同时还能让站点的真实IP “隐身”

但是这对于我们渗透测试时影响很大:无论我们对CDN的服务器有多大的控制权,也始终影响不到真实站点,也就是源站

此时需要我们绕过CDN,找到真正源站的IP

绕过方法

  1. 查询历史DNS记录

    • IP History - ViewDNS.info
    • DNSDB
  2. PHPinfo

    如果目标网站存在phpinfo泄露等,可以在phpinfo中的
    SERVER_ADDR_SERVER["SERVER_ADDR"]找到真实ip

  3. 查询子域名

    CDN的流量费还是不便宜的,所以很多站长可能只会对主站或者流量大的子站点做了 CDN,而很多小站子站点又跟主站在同一台服务器或者同一个C段内,此时就可以通过查询子域名对应的 IP 来辅助查找网站的真实IP。

    具体查询子域名的方法会在接下来介绍

  4. 使用国外主机解析域名

    国内很多 CDN 厂商因为各种原因只做了国内的线路,而没有针对国外的线路,此时我们使用国外的主机直接访问可能就能获取到真实IP。

  5. 网站邮件订阅查找

    RSS邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP了。

子域名

概述

收集子域名可以扩大测试范围,同一域名下的二级域名都属于目标范围。

收集方法

  1. 使用搜索引擎在线收集

    • FOFA搜索子域名

      网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统

      语法:domain=“主域名”

    • 使用谷歌语法

      Site:主域名

  2. 在线查询

    • 子域名查询 查子域名 查子站 子域名大全 二级域名查询 查子域 (chaziyu.com)
    • DNSdumpster.com - dns recon and research, find and lookup dns records
    • http://tool.chinaz.com/subdomain/
  3. 使用工具爆破挖掘子域名

    • Layer

      链接:https://pan.baidu.com/s/1QEYXjrGsARcXk6D-xLS64Q?pwd=1111
      提取码:1111

    • OneForAll

      shmilylty/OneForAll: OneForAll是一款功能强大的子域收集工具 (github.com)

      使用OneForAll时需要以管理员身份打开终端

      使用高版本python运行时可能会出现报错ImportError: cannot import name ‘sre_parse’ from ‘re’

      解决方法是找到python文件下的Lib\site-packages\exrex.py文件,对其代码进行更改:

      image-20230822210252449

  4. 使用证书反查

    crt.sh | Certificate Search

解析记录

概述

查询域名的NS记录、MX记录、TXT记录等很有可能指向的是真实ip或同C段服务器。

同时flag也有可能藏在这些解析记录中

常见解析类型

  1. A记录(Address Record):A记录将域名解析为IPv4地址。这是最常见的DNS记录类型,用于将主机名(例如:http://example.com)指向一个IPv4地址(例如:192.0.2.1)。
  2. AAAA记录(IPv6 Address Record):AAAA记录将域名解析为IPv6地址。与A记录类似,AAAA记录用于将主机名(例如:http://example.com)指向一个IPv6地址(例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334)。
  3. CNAME记录(Canonical Name Record):CNAME记录用于将一个域名指向另一个域名。通常用于别名或子域名的情况,例如将http://www.example.com指向http://example.com。
  4. MX记录(Mail Exchange Record):MX记录用于指定处理域名电子邮件的邮件服务器。通常,MX记录会指向一个邮件服务器的域名,如:http://mail.example.com。
  5. NS记录(Name Server Record):NS记录指定了负责解析域名的DNS服务器。通常,在注册域名时,域名注册商会为您分配默认的NS记录。这些记录可以更改,以便将域名的解析委托给其他DNS服务器。
  6. TXT记录(Text Record):TXT记录用于存储与域名相关的任意文本信息。这些记录通常用于验证域名所有权(如Google网站验证)或实现电子邮件验证技术(如SPF,DKIM和DMARC)。

收集方法

  1. 使用本机的nslookup命令

    nslookup -type=type domain [dns-server]

    其中type为解析类型,domain为域名,dns服务器为可选项

    命令详解:nslookup命令详解和实战例子(全)_老鸟诗人的博客-CSDN博客

  2. 在线查询

    • 在线域名解析记录检测-在线Nslookup域名解析查询工具 (jsons.cn)
    • 域名解析查询 | DNS查询 | IPv6解析 | 在线dig | IP查询(ipw.cn)

旁站

概述

旁站指的是同一服务器上的其他网站,一般是同一ip

收集方法

  1. 在线查询

    • 同IP网站查询,同服务器网站查询 - 站长工具 (chinaz.com)

    • ip查询 查ip 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名 (ipchaxun.com)

  2. 搜索引擎

    fofa

    语法:ip=“xxx.xxx.xxx.xxx”

C段

概述

对目标主机无计可施时,我们可以尝试一下从C段入手。C段入侵是拿下同一C段下的服务器,也就是说是D段1-255中的一台服务器,然后直接从被端掉的服务器出发进行其他测试

收集方法

  1. 在线查询

    同IP网站查询,C段查询,IP反查域名,在线C段,旁站工具 - WebScan

  2. 搜索引擎

    fofa

    语法:ip=“xxx.xxx.xxx.0/24”

服务器信息

端口

概述

当确定了目标大概的ip段后,可以先对ip的开放端口进行探测,一些特定服务可能开起在默认端口上,探测开放端口有利于快速收集目标资产,找到目标网站的其他功能站点。通过扫描服务器开放的端口以及从该端口判断服务器上存在的服务。

收集方法

  1. 在线端口检测

    • 端口扫描 - 站长工具 (chinaz.com)
    • 在线端口检测,端口扫描,端口开放检查-在线工具-postjson (coolaf.com)
  2. 扫描工具

    • 御剑

    • Nmap

      教程:https://blog.csdn.net/weixin_54977781/article/details/123852687

服务器类型

网站服务器有不同的操作系统:windows、Linux、mac os

windows对大小写不敏感,其他两个对大小写敏感

数据库类型

目前比较常用的数据库有:MySQL、SQL server、Oracle等。SQL server开放的默认端口:1433,MySQL开放的默认端口:3306、Oracle开放的默认端口:1521。

waf防火墙

收集方法

kali自带Wafw00f

语法:wafw00f xxx.com

网站信息

备份文件

除了F12查看源代码,有时网站的备份文件也会泄漏源代码

备份文件是常见的源码泄露的方式,实践中往往是开发者的疏忽而忘记删除备份文件,从而导致服务器中残留源码。我们可以通过访问这些备份文件来审计代码,一般情况下可以用后台扫描工具扫描。

备份文件常见的后缀名

备份文件基本上都是压缩包

.rar .zip .7z .tar .gz .bak
对于bak类的备份文件,可以直接输入文件名称+.bak访问例如:
index.php.bak
.txt .old .temp _index.html .swp .sql .tgz

备份文件常见的文件名

web website backup back www wwwroot temp db data code test admin user
sql

gedit备份文件

在Linux下,用gedit编辑器保存后,当前目录下会生成一个后缀为~的文件,其文件内容就是刚编辑的内容。假设刚才保存的文件名为flag,则该文件名为flag~。

通过浏览器访问这个带有~的文件,便能得到源代码

vim备份文件

使用vim编辑器编写filename文件时,会有一个.filename.swp文件产生,它是隐藏文件。如果编写文件时正常退出,则该swp文件被删除,如果异常退出,该文件则会保存下来,该文件可以用来恢复异常退出时未能保存的文件,同时多次意外退出并不会覆盖旧的.swp文件,而是会生成一个新的,例如.swo文件。

针对swp备份文件,我们可以用vim -r命令恢复文件的内容

例如当前目录下假如存在.flag.swp文件,则恢复命令为vim -r flag

收集方法
  1. 手动组合文件名和后缀并尝试

  2. 使用后台扫描工具

  3. 使用BurpSuite

    将访问目标站点的请求包转到Intruder模块

    image-20230824160319872

    使用集束炸弹模式,并设置两个变量

    image-20230824161726084

    设置payload为测试用的文件名和后缀

    image-20230824162745213

  4. 使用自定义python脚本

    import requestsurl1 = 'http://example.com'		# url为被扫描地址,后不加‘/’# 常见的网站源码备份文件名
    list1 = ['web', 'website', 'backup', 'back', 'www', 'wwwroot', 'temp','data','db','code','admin','user','sql','index.php']
    # 常见的网站源码备份文件后缀
    list2 = ['tar', 'tar.gz', 'zip', 'rar', 'bak','old' ,'temp','_index.html','.swp','.sql','.tgz']for i in list1:for j in list2:back = str(i) + '.' + str(j)url = str(url1) + '/' + backprint(back + '    ', end='')print(requests.get(url).status_code)
敏感目录

概述

通过扫描目录和文件,大致了解同站的的结构,获取突破点,比如后台,文件备份,上传点以及源码的目录

敏感文件常见的如.git文件泄露,.svn文件泄露,phpinfo泄露等

收集方法

  1. 后台扫描工具

    • 御剑

      链接: https://pan.baidu.com/s/1uvnBpzTvp7GLhIoivnIN0w?pwd=1111

      提取码: 1111

      御剑工具的字典非常重要,平时做题遇到没见过的的后台都可以加进去

    • dirsearch

      这里安装dersearch后可能会出现扫描慢的情况(正常扫描速度应该在200/s左右)

      解决方法参考这篇文章:dirsearch扫描速度慢的bug修复 | LiangMaxwell’s Blog

      语法:python dirsearch.py -u http://example.com:10800

      指定响应码可以加上-i

      例如若要指定200和300-399之间的响应码,可以加上-i 200,300-399

      递归目录扫描,可以加上-r -R 层数

      详细使用教程:dirsearch用法大全_kit_1的博客-CSDN博客

  2. 查看robots.txt和sitemap.xml等文件

  3. 搜索引擎在线收集

    • 任意文件下载:site:域名 filetype:zip|rar|zip|xml
    • 敏感信息(目录):site:域名 index of、intitle:"Index of /admin"
    • 未授权访问:inurl:php? intext:CHARACTER_SETS,COLLATIONS, ?intitle:phpmyadmin
    • 后台:site:xxx.com inurl:login|admin|manage|member|admin_login|login_admin|system|login|user
CMS类型(指纹识别)

概述

收集好网站信息之后,应该对网站进行指纹识别,通过识别指纹,确定目标的cms及版本,方便制定下一步的测试计划

CMS内容管理系统的缩写。它是一种软件工具,用于创建、编辑和发布内容。CMS系统可以帮助用户创建和管理他们的网站,帮助网站管理员管理构成现代网站的许多不同资源,内容类型和各种数据。CMS系统分为四种不同类型:企业内容管理系统(ECM / ECMS),Web内容管理系统,Web组内容管理系统和组件内容管理系统。CMS最擅长的就是建设网站,最流行的CMS有:Wordpress,Drupal,Joomla

收集工具

  1. 在线识别工具

    • 云悉: 云悉互联网WEB资产在线梳理|在线CMS指纹识别平台 - 云悉安全平台 (yunsee.cn)
    • 潮汐:TideFinger 潮汐指纹 TideFinger 潮汐指纹 (tidesec.com)
  2. kali自带的whatweb

    语法:whatweb xxx.com

探针泄漏

概述

安装了LNMP后或者是配置了PHP环境后,我们一般习惯性地上传一个PHP探针来检测一下我们的PHP环境是否正确地配置,同时有时遇到一些特殊的程序需要相关的PHP组件支持,我们也可以上传一个PHP探针来检测一下我们的Web环境是否符合要求。

收集方法

  1. 尝试手动添加常见的探针文件

    常见探针文件有:

    phpinfo.php

    tz.php

    monitor.php

    l.php

  2. 在后台扫描字典中添加常见探针文件

谷歌hacker

谷歌语法

  • site:

    • 指定域名
  • filetype:

    • 指定文件类型
  • inurl:

    • 指定URL
  • link:

    • 包含指定网页的链接的网页
  • intitle:

    • 指定title
  • intext:

    • 指定内容

详细教程

信息收集之Google Hacking的简单用法_index of /admin_谢公子的博客-CSDN博客

源码泄露

git 源码泄露

git是一个主流的分布式版本控制系统,开发人员在开发过程中经常会遗忘.git文件夹,导致攻击者可以通过.git文件夹中的信息获取开发人员提交过的所有源码,进而可能导致服务器被攻击而沦陷

  • 常规git泄漏

    利用.get文件恢复源码

    使用工具GitHacker:WangYihang/GitHacker

    语法:githacker --url http://example.com/.git/ --output-folder G:\CTF\Web\工具\GitHacker\result

    或者使用工具dvcs-rippper

    rip-git.pl -v -u http://www.example.com/.git/

  • git回滚

    git会记录每次提交(commit)的修改

    git回滚可以让我们复原之前commit的版本

    git log --stat可以查看每个commit修改了哪些文件

    git diff HEAD commit-id可以查看当前版本与指定commit之间的区别

    使用git stash pop恢复文件

    使用命令git reset HEAD^可以回到上一个版本

  • git分支

    git中常用的是master分支,但也可能存在其他的时间线分支

    在恢复的源码文件夹中执行git branch -v查看分支信息

    执行git reflog查看checkout记录

    下载分支的head信息

    再使用工具恢复

SVN 源码泄露

SVN是一个开放源代码的版本控制系统,和Git类似。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。

主要利用**.svn/entrieswc.db文件**

可以使用工具dvcs-ripper

dvcs-ripper需要在linux系统使用

rip-svn.pl -v -u http://www.example.com/.svn/

hg源码泄漏

Mercurial 是一种轻量级分布式版本控制系统,使用 hg init的时候会生成.hg,其中包含代码和分支修改记录等信息。

可以使用工具dvcs-ripper

rip-hg.pl -v -u http://www.example.com/.hg/

CVS泄露

CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。

针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息。

利用工具dvcs-ripper

rip-cvs.pl -v -u http://www.example.com/CVS/

Bazaar/bzr泄露

bzr是个版本控制工具, 虽然不是很热门, 但它也是多平台支持, 并且有不错的图形界面。

使用工具dvcs-ripper

rip-bzr.pl -v -u http://www.example.com/.bzr/

DS_Store 文件泄露

.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。如果将.DS_Store上传部署到服务器,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。

使用工具ds_store_exp

python ds_store_exp.py http://www.example.com/.DS_Store

http状态码

响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):

分类分类描述
1**信息,服务器收到请求,需要请求者继续执行操作
2**成功,操作被成功接收并处理
3**重定向,需要进一步的操作以完成请求
4**客户端错误,请求包含语法错误或无法完成请求
5**服务器错误,服务器在处理请求的过程中发生了错误

HTTP状态码列表:

状态码状态码英文名称中文描述
100Continue继续。客户端应继续其请求
101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200OK请求成功。一般用于GET与POST请求
201Created已创建。成功请求并创建了新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应。
202Accepted已接受。已经接受请求,但未处理完成
203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204No Content无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content部分内容。服务器成功处理了部分GET请求
300Multiple Choices多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301Moved Permanently永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303See Other查看其它地址。与301类似。使用GET和POST请求查看
304Not Modified未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy使用代理。所请求的资源必须通过代理访问
306Unused已经被废弃的HTTP状态码
307Temporary Redirect临时重定向。与302类似。使用GET请求重定向
400Bad Request客户端请求的语法错误,服务器无法理解
401Unauthorized请求要求用户的身份认证
402Payment Required保留,将来使用
403Forbidden服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405Method Not Allowed客户端请求中的方法被禁止
406Not Acceptable服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408Request Time-out服务器等待客户端发送的请求时间过长,超时
409Conflict服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息
412Precondition Failed客户端请求信息的先决条件错误
413Request Entity Too Large由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414Request-URI Too Large请求的URI过长(URI通常为网址),服务器无法处理
415Unsupported Media Type服务器无法处理请求附带的媒体格式
416Requested range not satisfiable客户端请求的范围无效
417Expectation Failed服务器无法满足Expect的请求头信息
500Internal Server Error服务器内部错误,无法完成请求
501Not Implemented服务器不支持请求的功能,无法完成请求
502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504Gateway Time-out充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported服务器不支持请求的HTTP协议的版本,无法完成处理

ctfshow web1-20

web1(注释)

按F12调出页面源码

image-20230822233537054

可以发现flag就放在html注释中

web2(JS禁用F12)

image-20230822233903624

页面显示无法查看源代码,F12按键和右键均失效

考虑到可能是被js给禁用了

方法一:

此处我们在url前加上view-source:直接查看页面源码

image-20230822234638787

在源码中我们能看到js确实禁用了右键和f12等功能

flag仍然藏在注释中

方法二:

由于是JavaScript导致的禁用,那么我们可以直接在浏览器中关闭JavaScript的功能

以edge浏览器为例,在设置中搜索JavaScript,在阻止栏中添加我们想查看源码的站点url

image-20230822235233238

此时F12功能又恢复了

image-20230822235306809

web3(响应体)

根据题目提示,使用burpsuite进行抓包

image-20230822235930989

发现flag藏在响应体中

web4(robots.txt)

题目提示robot,我们直接在网站地址后加/robots.txt

image-20230823000254654

不让爬的文件中有一个flag命名的txt文件,flag应该就在其中

image-20230823000401098

web5(phps源码)

题目提示phps源码

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

因为用户无法直接通过Web浏览器“看到”php文件的内容,所以需要用phps文件代替。

在题目未给出提示时,我们也可以通过扫描后台来发现遗留的phps文件

在url后加上/index.phps下载phps源码

image-20230823123851826

用vscode打开,flag就在phps源码中

image-20230823123944208

web6(备份文件)

使用dirsearch扫描,发现有备份文件

image-20230824165250185

手动在url后添加www.zip

image-20230824163043277

得到备份文件

解压缩后得到flag文件,发现包含的flag格式不符,考虑可能是提示文件名

image-20230824163126450

在url后加上fl000g.txt得到最终flag

web7(git泄漏)

使用dirsearch扫描,发现/.git/泄露

image-20230824165840414

访问该地址后得到flag

image-20230824170238593

web8(svn泄漏)

使用dirsearch扫描,发现/.svn/泄露

image-20230824170701799

访问该地址后得到flag

image-20230824170741244

web9(vim备份)

使用vim编辑器编写filename文件时,会有一个.filename.swp文件产生,它是隐藏文件。如果编写文件时正常退出,则该swp文件被删除,如果异常退出,该文件则会保存下来,该文件可以用来恢复异常退出时未能保存的文件,同时多次意外退出并不会覆盖旧的.swp文件,而是会生成一个新的,例如.swo文件。

本题的描述显然是暗示考点是Vim泄漏

image-20230824171932488

而需要修改网页,则需要修改index.php文件

尝试访问index.php.swp,下载得到swp文件,打开后得到flag:

image-20230824172248701.png

web10(cookie)

查看网页cookie的方式有以下几种:

  1. 在浏览器的控制台中输入javascript:alert(document.cookie),打印 cookie信息

  2. 以本人使用的edge浏览器为例

    image-20230824180722858

    点击url栏旁的关于信息,即可查看当前网页使用的Cookie

    image-20230824180814189

本题直接在控制台打印cookie信息

image-20230824180955706

得到flag的url编码

web11(域名解析记录)

本题使用在线工具查询相应站点的域名解析记录

image-20230824183447166

在TXT记录中得到flag

web12(社工)

用dirsearch扫到admin这个目录,应该是有登录界面

image-20230824184637831

根据题目提示,密码应该就藏在页面当中

尝试页面下方的电话号码

image-20230824184719968

成功登录

web13(技术文档)

页面底部留有技术文档document

image-20230824195405357

按照指示登录http://http://f78fddce-9ace-4612-a3d3-82c302c63f6e.challenge.ctf.show/system1103/login.php得到flag

web14(网页编辑功能泄漏)

用dirsearch扫出editor目录

image-20230824200612347

访问editor,进入一个提交页面

image-20230824200749543

发现有插入文件的功能,那我们就可以直接服务器上的文件了

image-20230824201030486

linux下的特殊目录:/var/www/html,把静态网页文件放到这个目录下就可以通过IP很方便的访问,

如果要访问 /var/www/html/myfolder/test.html

我在浏览器地址栏输入 http://[ip]/myfolder/test.html就行了。

不过这个便利的功能并不是linux操作系统自带的,需要启用httpd服务才行。

猜测本题的网页在var文件夹下

顺利按/var/www/html的路径找到源代码

image-20230824201641383

在nothinghere下找到flag

web15(社工)

用dirsearch扫完发现存在管理员登录入口

image-20230824204443207

该后台登录系统存在忘记密码功能

同时页面底部也泄露了具体邮箱

第一个问题是在哪个城市

image-20230824204648479

搜索QQ号,通过QQ上的资料确定所在地在西安

提交后显示密码已重置

image-20230824205004461

重新登录并得到flag

web16(php探针)

根据题目的提示,网站应该是遗留了php探针

经过尝试成功访问/tz.php

image-20230824211804059

发现phpinfo处是灰色链接,点击进入phpinfo

image-20230824212029045

查找flag属性并找到flag

image-20230824212017652

web17(sql备份)

用dirsearch扫出sql备份文件

image-20230824215859540

下载后打开,找到flag

image-20230824220020864

web18(查阅js源码)

看到这种游戏类型的题目,大概率是不能手动过关的,只能从修改规则上入手

打开js源码,找到游戏过关相关的代码

image-20230824220847569

发现如果达到100分,会弹窗一段Unicode编码

image-20230824221505621

解码后得到你赢了,去幺幺零点皮爱吃皮看看

在url后加上/110.php得到flag

web19(密码泄露)

image-20230824223141008

分享加密原理后,解密注释中泄漏的密文

image-20230824223207659

使用其登录后成功获得flag

web20(mdb泄漏)

image-20230824224302056

扫出/db/db.mdb数据库文件

下载后使用记事本打开并查找flag

从0到1

常见的搜集(robots、vim、gedit)

尝试常规的信息收集方法

首先是robots.txt

image-20230825133458156

得到flag目录

获得flag1前半段n1book{info_1

测试是否存在vim备份文件,尝试/.index.php.swp

下载得到_index.php.swp文件

其中有后半段flagp0rtant_hack}

测试是否存在gedit备份文件,尝试/index.php~

得到flag中段s_v3ry_im

粗心的小李(git泄漏)

题目提示git泄漏,考虑git泄露时的三种场景

首先是常规git泄漏

使用GitHacker恢复源码

githacker --url http://2f16f0e7-c2bf-4ca1-95dd-37e0cf03bd0a.node4.buuoj.cn:81/.git/ --output-folder G:\CTF\Web\工具\GitHacker\result

image-20230827161744780

得到源码index.html

打开后得到flag

CTFHUB 信息泄漏

目录遍历

image-20230826224503145

点击开始寻找flag,发现嵌套了非常多层目录

image-20230826224537449

将flag_in_here添加到爆破字典中

使用dirsearch进行递归目录扫描,设置最多3层:python dirsearch.py -u http://challenge-f27080f1e67b7730.sandbox.ctfhub.com:10800 -i 200,300-399 -r -R 3

image-20230826225758115

扫到flag文件,访问/flag_in_here/2/4/flag

image-20230826225859690

PHPINFO

image-20230826230208430

点击查看phpinfo,查找flag

image-20230826230259777

备份文件下载

网站源码

使用自定义脚本扫描备份文件

image-20230826231038358

下载www.zip,解压后得到如下文件

image-20230826231124216

txt中显示where is flag ??

尝试在url添加/flag_115928996.txt,得到flag

image-20230826231713234

bak文件

使用自定义脚本扫描得到index.php.bak

image-20230826232431817

下载后得到flag

vim缓存

参考vim泄漏原理,在url后加上/.index.php.swp

下载备份文件后得到flag

.DS_Store

在url后加上/.DS_Store,下载得到备份文件

image-20230826233812659

根据提示在url后加上/1626d67afe2fee89348ecaaff46381dc.txt得到flag

Git泄漏

Log

使用GitHacker扫描站点的.git文件,生成源码

image-20230827162001359

源代码目录如下

image-20230827162030953

50x.html界面提示log日志

image-20230827002323089

执行git log命令

image-20230827005434467

使用git diff 1355add0bcf41982c67f591f699f4296b311bd07进行回滚

得到flag

image-20230827005719871

Stash

使用GitHacker恢复源码githacker --url http://challenge-ceb412434853a026.sandbox.ctfhub.com:10800/.git/ --output-folder G:\CTF\Web\工具\GitHacker\result

image-20230827162444014

得到源码目录如下

image-20230827162513656

执行git log查看版本

image-20230827162658641

执行 git diff HEAD 5aff97711513ad7db6c19d6222860240e91e7491对比与add flag版本的区别

image-20230827162924216

此时有两种解题方法:

  1. 按照题意使用git stash pop恢复文件

    image-20230827163722208

  2. 执行git reset HEAD^回到上一个add flag的版本,此时删掉的文件也回来了

    image-20230827163605196

flag就在恢复的txt文件中

Index

使用GitHacker恢复源码githacker --url http://challenge-1f42ffb3a63e3f3b.sandbox.ctfhub.com:10800/.git/ --output-folder G:\CTF\Web\工具\GitHacker\result

源码目录如下

image-20230827164306940

flag在txt文件中

SVN泄漏

在kali中使用dvcs-ripper工具

在result目录下执行../rip-svn.pl -v -u http://challenge-461ad970cc7dbf6b.sandbox.ctfhub.com:10800/.svn/

image-20230827170209722

得到的源码在新建的result文件夹中

image-20230827170310567

扫描后发现.svn文件夹

进入后再次扫描,发现数据库文件wc.db

image-20230827170422106

执行cat wc.db | grep -a flag在其中寻找flag

image-20230827172604750

grep指令

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep
指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

shell grep [options] pattern [files]

  • pattern - 表示要查找的字符串或正则表达式。
  • files - 表示要查找的文件名,可以同时查找多个文件,如果省略 files 参数,则默认从标准输入中读取数据。

常用option参数

  • -a --text: 不要忽略二进制的数据。
  • -i:忽略大小写进行匹配。
  • -v:反向查找,只打印不匹配的行。
  • -n:显示匹配行的行号。
  • -r:递归查找子目录中的文件。
  • -l:只打印匹配的文件名。
  • -c:只打印匹配的行数。

并未发现有用信息后开始手动遍历目录,并在以下目录发现flag

image-20230827172247519

HG泄漏

在result目录下执行../rip-hg.pl -v -u http://challenge-461ad970cc7dbf6b.sandbox.ctfhub.com:10800/.hg/

image-20230827182308097

发现报错,使用ls -al扫描发现.hg文件夹依然下载成功

image-20230827182438579

使用tree列出.hg的目录

image-20230827182529441

使用grep匹配flag相关信息

image-20230827182923705

发现历史版本中存在flag_211812339.txt文件

在url后加上/flag_211812339.txt后得到flag

相关文章:

CTF Web信息搜集 25000字详解

目录 前言信息收集常见信息分类域名信息whois备案CDN子域名解析记录 旁站C段服务器信息端口服务器类型数据库类型waf防火墙 网站信息备份文件备份文件常见的后缀名备份文件常见的文件名gedit备份文件vim备份文件收集方法 敏感目录CMS类型(指纹识别)探针泄…...

MSPM0G3507之电赛小车

一、前言 本文没什么技术分享,纯聊天。以下内容均为笔者的浅薄理解,有不对的地方还请多多包涵。 二、相关配置 主控单元:MSPM0G3507SPTR(48角) 编译环境:Keil5.33、5.39(推荐)都可 …...

linux运维一天一个shell命令之vmstat详解

概念 vmstat 是 Linux 系统中一个非常有用的工具,主要用于报告系统的虚拟内存、进程、CPU 活动和 IO 性能等信息。以下是对 vmstat 工具的详细解释: 基本语法 vmstat [options] [delay [count]]delay:更新的时间间隔(以秒为单…...

前端开发调试工具推荐分类整理

具体前往:前端调试工具分类整理汇总...

http协议与nginx

动态页面与静态页面的差别: (1)URL不同 静态⻚⾯链接⾥没有“?” 动态⻚⾯链接⾥包含“?” (2)后缀不同 (开发语⾔不同) 静态⻚⾯⼀般以 .html .htm .xml 为后缀 动态⻚⾯⼀般以 .php .jsp .py等为后…...

一款国外开发的高质量WordPress下载站模板主题

5play下载站是由国外站长开发的一款WordPress主题,主题简约大方,为v1.8版本, 该主题模板中包含了上千个应用,登录后台以后只需要简单的三个步骤就可以轻松发布apk文章, 我们只需要在WordPress后台中导入该主题就可以…...

Laravel为什么会成为最优雅的PHP框架

Laravel之所以成为最优雅的PHP框架之一,是因为它提供了一系列的优点,包括简洁的语法、强大的功能集、高度模块化和可扩展性、优雅的ORM、内置认证系统、丰富的社区支持和测试友好等。这些优点使得Laravel在PHP框架中脱颖而出,成为了很多开发者的首选框架。 官网:https://l…...

孤儿进程的例子

先让父进程死亡&#xff0c;子进程的父进程会被操作系统管理 先使用gcc编译代码, 执行代码后用 ps -p <进程号> -f 查看进程 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <unistd.h>int main() {pid_t pid;// 创建…...

CSS前端面试题——怎么用CSS实现一个宽高自适应的正方形?

方法一&#xff1a;使用 padding 方案 这种方法通过设置元素的 padding 属性来实现宽高比例相等的正方形。假设我们希望正方形的边长为相对于父容器的百分比值&#xff0c;比如50% .square {width: 50%; /* 可以是任意宽度&#xff0c;这里假设为父元素宽度的50% */padding-t…...

谷粒商城实战笔记-56~57-商品服务-API-三级分类-修改-拖拽功能完成

文章目录 一&#xff0c;56-商品服务-API-三级分类-修改-拖拽功能完成二&#xff0c;57-商品服务-API-三级分类-修改-批量拖拽效果1&#xff0c;增加按钮2&#xff0c;多次拖拽一次保存完整代码 在构建商品服务API中的三级分类修改功能时&#xff0c;拖拽排序是一个直观且高效的…...

Shader入门精要总结(二)矩阵

1. 矩阵乘法 一个rn的矩阵A和一个nc的矩阵B相乘&#xff0c;它们的结果AB将会是一个rc大小的矩阵&#xff0c;不满足此规则不能相乘 矩阵乘法满足一些性质 矩阵乘法不满足交换律 即AB≠BA矩阵乘法满足结合律 (AB)CA(BC) 2. 特殊矩阵 方块矩阵 指行和列数目相等的矩阵&#…...

基于CentOS Stream 9平台安装MySQL Community Server 9.0.1 Innovation

1. 安装之前 1.1 查看系统版本 cat /etc/redhat-releaseCentOS Stream release 9 1.2 查看cpu架构 lscpu架构&#xff1a; x86_64 CPU 运行模式&#xff1a; 32-bit, 64-bit 2. 官网下载 https://dev.mysql.com/downloads/mysql/ 要多看看 官方9.0文档&#xff1a;https://d…...

正则采集器之五——商品匹配规则

需求设计 实现分析 系统通过访问URL得到html代码&#xff0c;通过正则表达式匹配html&#xff0c;通过反向引用来得到商品的标题、图片、价格、原价、id&#xff0c;这部分逻辑在java中实现。 匹配商品的正则做成可视化编辑&#xff0c;因为不同网站的结构不同&#xff0c;同…...

一键切换阿里yum源(包括其他系统repo镜像查找方法)

一键切换阿里yum源 示例命令其他系统repo镜像GitHub文档 示例命令 # 备份旧源 mv CentOS-Base.repo CentOS-Base.repo.bak # 添加新源(阿里镜像源) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo其他系统repo镜像 这里的示例是用…...

Fiddler学习笔记

目录 前言 简介 原理 界面 前言 测试可以使用fiddler工具&#xff0c;通过抓包的方式修改前端参数和模拟后端返回&#xff0c;快速定位缺陷。 简介 Fiddler是HTTP协议调试代理工具&#xff0c;可以记录并检查所有客户端和服务器之间的HTTP和HTTPS请求&#xff0c;允许监视…...

【Vue3】watch 监视多种类型数据

【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…...

【C++入门】虚函数与多态

文章目录 前言虚函数是什么&#xff1f;如何使用虚函数&#xff1f; 纯虚函数是什么&#xff1f;虚函数与普通函数的区别虚表虚表是什么&#xff1f;含有虚表的类内存结构图如何找到虚表的地址&#xff1f;示例代码代码解释 多态是什么&#xff1f;如何使用多态&#xff1f;为什…...

wpf中轮询显示图片

本文的需求是&#xff0c;在一个文件夹中&#xff0c;放一堆图片的集合&#xff0c;然后在wpf程序中&#xff0c;按照定时的方式&#xff0c;循序显示照片。 全部代码 1.声明一个PictureInfo类 namespace WpfApp1 {public class PictureInfo{public string? FileName { get; …...

CSA笔记9-磁盘管理(2)

分区挂载 挂载&#xff1a;将该文件系统中的内容与指定的目录关联起来&#xff0c;使得你可以通过该目录来访问文件系统中的文件和目录。 mount 命令用来挂载文件系统 #挂载/dev/sda1和/dev/sda2 [rootlocalhost ~]# mkdir test{1..2} [rootlocalhost ~]# ll test1 te…...

Python入门第三课

# 入门第三课 # 关键字 if and or in not in ! car g print(car g) print(car dd) if car ! hh:print("wlcome to here ") age 33 print(age 33) print(age 44) age1 44 if age >0 and age1 > 0:print("nihao") if age >0 or age1 > …...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M&#xff08;N ≤ M&#xff09;的矩阵中选出 N 个数&#xff0c;任意两个数字不能在同一行或同一列&#xff0c;求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求&#xff1a;1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...