得而不惜就该死!
--章总
开始新的篇章!
零、目录
一、实验准备
1、ctf网站:ctf.show
2、工具:chrome浏览器、hackbar插件
3、burpsuite抓包工具
二、实验技巧
(一)F12摸奖 源码泄露
(二)没思路就抓包 重发器发包看返回包
(三)robots.txt文件泄露
(四)index.phps文件泄露
(五)网站源码泄露
(六).git版本控制文件泄露
(七).svn/版本控制
(八)Vim 缓存文件泄露
三、实验操作
(一)第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。
至此完成