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

CTFshow之信息收集第1关到10关。详细讲解

得而不惜就该死!

--章总

开始新的篇章!

零、目录

一、实验准备

1、ctf网站:ctf.show

2、工具:chrome浏览器、hackbar插件

3、burpsuite抓包工具

二、实验技巧

(一)F12摸奖 源码泄露

(二)没思路就抓包 重发器发包看返回包

(三)robots.txt文件泄露

(四)index.phps文件泄露

(五)网站源码泄露

(六).git版本控制文件泄露

(七).svn/版本控制

(八)Vim 缓存文件泄露

(九)cookie泄露

三、实验操作

(一)第1关

(二)第2关

1、猜测js代码禁止调用F12

2、使用ctrl+u查看网站源码

3、使用插件扩展(chrome)

(三)第3关

(四)第4关

(五)第5关

(六)第6关

(七)第7关

(八)第8关

(九)第9关

(十)第10关


一、实验准备

1、ctf网站:ctf.show

2、工具:chrome浏览器、hackbar插件

3、burpsuite抓包工具

二、实验技巧

(一)F12摸奖 源码泄露

(二)没思路就抓包 重发器发包看返回包

(三)robots.txt文件泄露

(四)index.phps文件泄露

(五)网站源码泄露

(六).git版本控制文件泄露

(七).svn/版本控制

(八)Vim 缓存文件泄露

(九)cookie泄露

三、实验操作

(一)第1关

做题第一步,首先看要求,发现已经近乎明牌的告诉我们flag的位置就在注释中了,所以我们直接F12查看即可

验证后确实如我们所料,右键->edit html,直接复制提交flag

(二)第2关

依旧老思路,查看题目给我们的暗示:js前台拦截 === 无效操作,

可能大家对这句话理解不深,我们来解释一下:

首先我们知道,开发通常分为前端和后端,其中js属于前端语言,负责编写界面显示内容和检验前端交互数据

===符号就是处理交互数据的一种比对方式,只有在比对的数据的类型和值全部一致时,返回True(真),否则False;而==则是只要值一致即返回True,不用在意类型

解释完后,可能依旧云里雾里,我们延续第1题F12看源码摸奖

发现无法查看源码,F12阵亡!

信息收集吗,讲的就是如何“收集”,所以我们去找下F12调不出的解决措施即可

1、猜测js代码禁止调用F12

禁用前端js使用

(1)点击浏览器右上角三个点后点击设置

(2)隐私与安全->网站设置

(3)、设置不允许网站使用javascript

(3)、刷新题目网址->F12,同时得到flag提交  

同时查看源代码后,验证我们的猜想正确,确实使用js禁用了鼠标右键、键盘输入F12、文本复制

  • window.oncontextmenu函数部分
    • window.oncontextmenu = function(){return false};:这个函数用于处理鼠标右键单击事件。在网页中,当用户右键单击时,通常会弹出一个上下文菜单(包含复制、粘贴、查看源代码等选项)。通过将window.oncontextmenu设置为一个总是返回false的函数,就禁止了右键菜单的弹出。这样做可以防止用户通过右键菜单中的 “查看源代码” 选项来查看网页的 HTML 和 CSS 代码,或者阻止用户使用右键菜单中的其他功能(如复制图片、链接等),从而在一定程度上保护网页内容。
  • window.onselectstart函数部分
    • window.onselectstart = function(){return false};:此函数用于处理文本选择的开始事件。在网页中,当用户试图通过鼠标拖动或者其他方式选择文本内容时,这个事件就会触发。通过返回false,就阻止了用户在网页上选择文本。这可能是为了防止用户复制网页中的特定文本内容,例如一些受版权保护的文字、敏感信息或者防止用户对网页的布局(因选择文本而出现的高亮显示等)造成干扰。
  • window.onkeydown函数部分
    • window.onkeydown = function(){if (event.keyCode==123){event.keyCode=0;event.returnValue=false;}};:这个函数用于处理键盘按键按下事件。event.keyCode表示按下的按键对应的代码。在这里,它检查是否按下的是键码为123的按键。在大多数浏览器中,F12键的键码是123。如果检测到按下的是F12键,就将event.keyCode设置为0(相当于取消这个按键的操作),并将event.returnValue设置为false,这样就阻止了F12键的功能。因为在浏览器中,按下F12键通常会打开开发者工具,通过这种方式可以防止用户通过F12打开开发者工具来查看网页源代码、调试 JavaScript 等操作。

2、使用ctrl+u查看网站源码

由于在1中验证了自己猜想是网站使用js禁止了访问,所以使用其他快捷键查看即可

3、使用插件<view-source>扩展(chrome)

如果是foxfire则使用Web Developer插件

下载地址:<view-source>下载

使用:点击扩展->输入需要查看的url->submit

4、使用命令行curl发包

命令(cmd):curl url

只需要替换url为自己的即可,flag拿到

5、使用js逆向调试 

由于此办法过于鸡肋,此处不做扩展讲解

位置:开发者工具->sources

(三)第3关

优先看暗示,没思路则抓包?在跟着暗示走之前我们先F12摸奖,发现一无所获,只能burp抓包

查看数据包内容,没找见flag,放入重发器(repeater)查看返回包(reponse),flag得到!

GET / HTTP/1.1
Host: 4d80bd78-a245-4d0c-8cd3-ba1ffac89a0a.challenge.ctf.show
Cache-Control: max-age=0
Sec-Ch-Ua: "Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Accept: 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.7
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://4d80bd78-a245-4d0c-8cd3-ba1ffac89a0a.challenge.ctf.show/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Priority: u=0, i
Connection: close

此处欢迎抓包进入摸奖技术列表!

(四)第4关

查看暗示,robots.txt?

此文件为服务器和爬虫工程师们之间的君子约定,里面存放了服务器不允许爬取的文件内容路径,但是有的时候会错误放入重要信息形成此地无银三百两的现象!

虽然有新的暗示,但是我们依旧可以F12摸奖和抓包摸奖,没成功也没事。

访问robots.txt文件,发现一个不允许访问的路径,我偏去!访问后成功获取flag!

此处欢迎访问robots.txt进入摸奖技术列表!

(五)第5关

查看暗示,phps源码泄露?

PhpS 文件泄露是指在 Web 应用程序中,由于配置错误、漏洞或不当的操作,使得包含敏感信息的.phps 文件内容被暴露给未授权的用户。.phps 文件通常是经过某种处理(如备份、编辑器临时文件等)的 PHP 文件。例如,开发人员在使用编辑器编写 PHP 代码时,编辑器可能会生成临时备份文件(如.phps),这些文件如果被错误地部署到 Web 服务器上并且没有适当的访问限制,就可能导致泄露。

不忘本,摸奖三兄弟上了没成功,锻炼技术吗!多用咱有个印象。不过知道了使用的中间件和开发语言版本。

尝试访问index.phps路径,发现下载了该文件,我们使用文本编辑器打开,发现flag。

至于为什么访问一定要访问index.phps文件,大部分属于经验之谈,理解原理即可,下次遇见php开发网站当作自己的一个测试点即可

此处欢迎访问index.phps进入摸奖技术列表!

(六)第6关

解压源码?源码泄露!摸奖四件套,发现没有用。

试着解压缩www.zip文件,发现存在fl000g.txt,提交发现错误!,在url后加上路径fl000g.txt尝试,成功获取flag

但是此时我们会有这样一个疑问,你怎么知道要访问www.zip文件呢?这是因为考察的是源码泄露,我们是通过其他渠道发现的,所以在题目直接访问会很突兀,但是实际中,你可能是在github、cms等中发现的源码。

所以现在你记住可以使用这个来摸奖!

(七)第7关

版本控制?

定义:在 Web 开发过程中,.git 文件夹包含了整个项目的版本控制信息。当这个文件夹被错误地暴露在 Web 服务器可访问的目录下时,就会发生.git 版本控制泄露。这使得攻击者能够访问项目的源代码历史、开发人员的提交记录、分支信息以及可能包含的敏感信息,如数据库连接密码、API 密钥等。

通俗来讲:解释我们可以通过.git文件间接得到网站源码

利用此漏洞脚本:https://github.com/lijiejie/GitHack

首先访问.git/index目录,此时直接就出现flag了,不过我们不用在意,继续分析,实战中会出现403错误,这是因为资源在服务器存在,但是我们没有访问权限。获得此消息后,我们使用脚本来获取源码

命令:python gitHack.py url

url中带/.git/index或者/.git/

真是幽默,竟然不是.git文件,怪不得直接把flag爆出来了。不过大家知道这个处理思路就好

(八)第8关

发现依旧是版本控制泄露问题,我们直接上脚本跑。

首先访问验证/.git/index或者/.git/文件(文件夹),发现没有回显,我们不信邪,再用脚本跑一边,发现确实不是。

命令:python gitHack.py url

后续发现此为.svn版本控制泄露,我们直接术业有专攻,访问/.svn/即可。

与.git 泄露类似,如果.svn 目录被意外地暴露在 Web 服务器可访问的区域,攻击者可以获取项目的源代码。因为.svn 目录包含了工作副本中的所有文件版本信息,通过这些信息可以还原出完整的项目代码,包括一些可能尚未发布的功能代码或者旧版本的代码。

(九)第9关

看描述似乎是需要下载某文件进行vim编辑,但是为什么会死机?

尝试上述解题思路,发现不行。开始换思路,查找vim编辑死机会产生何种泄露?

Vim 缓存文件的产生与类型

交换文件(.swp):当使用 Vim 编辑文件时,它会自动创建一个交换文件(文件名格式通常是原文件名加上.swp 后缀)。这个交换文件用于在意外情况(如 Vim 崩溃、系统崩溃等)下恢复文件内容。例如,如果你正在编辑一个名为index.php的文件,Vim 可能会生成一个名为index.php.swp的交换文件。

备份文件(.bak 等):Vim 也可能会根据配置生成备份文件。这些备份文件包含了文件之前的版本内容,备份文件的命名格式可以通过 Vim 的配置进行设置,常见的有文件名加上.bak 后缀。它们的作用是提供文件内容的备份,以便在需要时可以恢复到之前的状态。

撤销文件(.undo):用于记录文件的编辑历史,方便用户撤销之前的操作。它存储了文件在不同编辑阶段的内容,使得用户可以回退到之前的编辑状态。

知晓vim编辑退出和交换文件.swp有关,所以我们试着访问/index.php.swp。自动下载了index.php.swp文件,我们打开看看,发现flag

(十)第10关

发现此题大概率和cookie泄露相关,查找相关资料认识cookie。

定义:Cookie 是网站存储在用户浏览器中的一小段文本信息。它主要用于在用户访问网站的不同页面之间记住用户的状态或偏好。例如,当用户登录一个网站后,网站会通过 Cookie 来识别用户身份,使得用户在浏览其他页面时不需要重复登录。Cookie 通常包含键值对,如username=John,其中username是键,John是值。

既然知道了是cookie泄露,那么我们就无需尝试其他泄露去摸奖。而cookie一般存在于返回包处,所以我们联动burpsuite抓包工具查找。确实发现flag,但是好像被编码了,携带百分号%,猜测是url编码,进行解码,得到flag。

至此完成


http://www.kler.cn/a/383726.html

相关文章:

  • Scala项目(图书管理系统)
  • 010 Qt_输入类控件(LineEdit、TextEdit、ComboBox、SpinBox、DateTimeEdit、Dial、Slider)
  • Pytorch | 从零构建EfficientNet对CIFAR10进行分类
  • 玩转OCR | 探索腾讯云智能结构化识别新境界
  • linux中docker命令大全
  • 图像配准有哪些技术?
  • SpringBoot基础系列学习(二):配置详解
  • 汉诺塔问题代码分享及思路分享(c基础)
  • Spring Cloud微服务:构建弹性、可扩展的分布式系统
  • AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
  • Oracle OCP认证考试考点详解082系列15
  • Angular进阶之十:toPromise废弃原因及解决方案
  • 【java】实战-力扣题库:二分查找
  • 首都师范大学地信GIS导师推荐(避坑)
  • 从 vue 源码看问题 — 如何理解 vue 响应式?
  • 【贪心算法】No.1---贪心算法(1)
  • 量子电路的实现 基于ibm的qiskit
  • 基于MySQL的企业专利数据高效查询与统计实现
  • 【日记】跟人沟通有时真的好头疼(688 字)
  • 年入百万:从初中辍学到 50 万读者!
  • npm i忽略依赖冲突
  • Java | Leetcode Java题解之第541题反转字符串II
  • 国产linux系统openeuler24.03安装gnome桌面环境后优化
  • 【MissModal】提高多模态情感分析对缺失情态的鲁棒性
  • 网络安全从入门到精通(特别篇I):应急响应之APT事件处置流程
  • android10 蓝牙(一)开关与扫描源码解析