Web安全——信息泄露
本文最后更新于0 天前,其中的信息可能已经过时,如有错误请发送评论

前言

最近发现长胖了,可能是晚上吃巧克力棒和旺旺泡芙的原因,然后作息也不是特别好,就调整了一下作息,顺便开始锻炼和减肥,不过大部分时间还是宅在家里面,一周下来减了4.1斤,还可以。然后发现浏览器收藏夹里面的东西太多了,每回想要找个东西都很麻烦,所以做了一个静态的资源导航页面,然后注册了一些ctf平台,因为之前那期SQL注入让我发现那个课程太老了,而且光看感觉印象不深,所以打算一遍刷题一遍学习,不会的就看wp,做过一遍就会了,所以web安全重新从信息泄露开始,之前那期SQL写的并不完全,因为我发现一些关键字绕过,比如空格可以用/**/或%a0代替,以及一些其他的知识视频也没讲,所以后续会重新补充一期SQL的文章

目前是学习的CTFHub的技能树

接下来是导航页面的展示,主体还是交给ai来写的,我只是简单的修改然后添加数据等

HTTP协议:

前言:

在学信息泄露之前Web分支下还有两个板块,分别是Web前置技能(http协议)和Web工具配置(无环境),大多没有相关的环境,唯一有的就是HTTP协议,所以就不把他单独写一篇文章了,直接写在一起

请求方式:

题目:

HTTP 请求方法, HTTP/1.1协议中共定义了八种方法(也叫动作)来以不同方式操作指定的资源

考点:

HTTP/1.1协议中的八种请求方法:

  • GET:请求指定资源的表示,通常用于读取数据
  • POST:向服务器提交数据,用于创建或处理资源
  • HEAD:与 GET 类似,但只返回响应头部,不包含具体内容
  • PUT:上传或更新服务器上的资源
  • DELETE:删除服务器上的指定资源
  • CONNECT:建立到服务器的隧道连接,通常用于 HTTPS 或其他协议的代理
  • OPTIONS:查询服务器支持的 HTTP 方法,通常用于跨域请求预检
  • TRACE:回显服务器收到的请求,用于诊断或调试

解题思路:

开启环境后访问链接,可以看到页面显示的内容,用浏览器插件翻译一下

HTTP方法是GET,因为是直接用浏览器访问的,提示我们用CTFB方法(虽然是用星号,但是还是能一下看出来,平台叫CTFHub,不过这里是全大写),会给我flag,那我们就直接抓包用CTFHUB的方法请求就可以了

开启火狐浏览器,然后开启代理,开启BurpSuite,开启抓包,然后访问环境,这里抓到了数据包,请求的方式在开头,使用的是GET请求,我们将它修改成CTFHUB,然后放行数据包,浏览器就成功显示了返回的flag,提交即可

302跳转

题目:

HTTP临时重定向

考点:

HTTP重定向是一种让浏览器自动跳转到新URL的机制,通常使用3xx状态码。常见的有301(永久重定向)和302(临时重定向)。301会将页面权重传递给新URL,适用于资源永久移动;而302则表示临时跳转,不传递权重

  • 301:永久搬迁,更新URL,搜索引擎传递权重
  • 302:临时搬迁,继续使用旧URL,搜索引擎不传递权重

解题思路:

打开环境访问链接,返回了这个页面,直接按提示点击这个超链接(give me flag),但是并没有返回内容,浏览器f12一下,然后网络,可以看到这里有一个302跳转,flag估计就在这里面

所以还是BurpSuite,但是这次不用抓包,直接访问,然后查看BurpSuite的HTTP history历史就行,翻到最下面,可以看到这里有个302的请求,点开看响应就能拿到我们的flag了

题目:

Cookie欺骗、认证、伪造

考点:

因为 HTTP 是无状态的,所以为了协助 Web 保持状态,Cookie 诞生了

Cookie是存储在浏览器中的小文本文件,用于保存用户会话和偏好。它包含键值对信息,常用于登录状态、用户跟踪,并有属性来控制过期时间、作用域和安全性

解题思路:

还是打开环境访问,题目告诉我们:用户好,只有管理员(admin)才能获取到flag,所以我们用burpsuite抓包看一下数据包

GET / HTTP/1.1是请求头,身下的是请求头部,一般服务器会返回数据的话就会在请求头后面空一行之后显示,这里没有返回数据,所以就不用管,Cookie在请求头部中,这里可以看到里面有一个admin的键,它的值为0,大胆猜测一下,服务器根据用户Cookie的值判断是否是管理员用户,0为普通用户(事先正常访问显示的是guest),1为管理员,所以将值修改为1后放行,就返回了flag

基础认证:

题目:

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。详情请查看

https://zh.wikipedia.org/wiki/HTTP基本认证 ——>这个访问太慢,我直接搜索HTTP基本认证了

考点:

HTTP基本认证是一种简单的身份验证方式,客户端通过在请求中发送用户名和密码来验证用户身份。这些凭证以Base64编码方式传输,但并不加密,因此通常与HTTPS一起使用以确保安全性

请求格式:

  1. 服务器响应 401 Unauthorized,要求客户端提供凭证。
  2. 客户端发送带有 Authorization 头的请求,格式如下:
Authorization: Basic <Base64编码后的用户名:密码>

解题思路:

这次启动题目后还额外给我们了一个附件,下载打开后是一个密码本,里面存放了一些密码,其中肯定包含了管理员密码

访问页面,点击click查看我们的flag,但是跳出了验证窗口,当然你可以手动一个一个的尝试,但是这里我们为了快捷和方便,直接使用BurpSuite对Authorization进行爆破

打开抓包,然后随便输入一个用户名和密码,因为我们有密码本了,只是不知道用户名,所以我们需要看看能不能随便试试获取到用户名,虽然能够猜到是admin,但是解题嘛,肯定是要试试的

这里将抓到的数据包右键发送到repeater(send to repeater),然后点击send,可以看到在服务器返回的内容中WWW-Authenticate:Basic realm=”Do u know admin ?” 问我们认识admin,也就是管理员吗,所以就可以判断出用户名为admin,那么我们就直接开始爆破

还是右键数据包,然后将它发送到intruder(send to intruder),然后我们选择Basic 后面的部分,选中后点击ADD§即可,这里我是一发送过来就是§有包裹住它,所以就直接切换到Payloads,进行payload的构造

一共是四个板块,第一个是设置需要爆破的参数,这里只有一个就选择1,然后simple list ,然后第二个模块 load 导入密码本,查看我们下载的附件,将附件里面的文本解压出来,然后直接选择txt文件即可

按照前面考点里面提供的格式,我们的payload是 用户名:密码,密码直接导入了密码本,但是前面的是固定的,所以在第三个板块我们需要添加一个固定的前缀,也就是prefix,点击add后选择add prefix 下面的前缀内容为:admin: 注意一定要有这个冒号,是分隔用户名和密码的,并且必须是英文的冒号

然后因为提交的必须是base64编码的字符串,所以我们还要添加一个base64的编码,这里选择encode(编码),与之对应的是Decode(解码),然后选择base64

添加好后,是第四个板块,这里是url编码,因为不需要,所以取消勾选,然后翻回上面,点击红色的Start attack按钮,开始爆破

爆破结束后,可以看到有很多的401状态码,代表认证失败,认证成功的情况下状态码会是200

所以我们可以直接点一下Status code,或者单独过滤200也可以,这里我是点了一下Status code,然后200的就出现在最上方了

然后点击这个数据包查看它的响应内容(Response),就能够在里面找到我们的flag了

响应包源代码

题目:

HTTP响应包源代码查看

考点:

在浏览器中按下 F12 打开调试工具后,可以查看HTTP响应包的源代码

  1. 切换到 Network选项卡
  2. 访问或刷新目标网页,网络请求将会显示在列表中
  3. 选择一个请求,点击查看详情
  4. 在显示详细信息中,切换到 Response(响应) 标签页,可以看到服务器返回的HTTP响应内容

解题思路:

打开环境,访问网页,f12,网络,然后禁用缓存刷新一下,可以看到只有一个请求内容,那么flag就只能在这个里面,点击这个请求(截图失败了,没有),我们点击响应,内容有点多,我们 ctrl+f (搜索的快捷键)一下,然后搜索 ctfhub ( 平台的flag格式为ctfhub{xxxxx} ),这里就直接找到flag了

信息泄露:

前言:

因为其中四道题目已经做了才想起来写文章,所以就没有准备截图,不过好在都挺容易理解的,而且为了写文章再单独去开一遍环境也太麻烦了,毕竟我已经通关过一次了,所以你会看到有些是csdn的水印,因为我懒得再去开环境截图了

目录遍历:

题目:

目录遍历

考点:

浏览器访问某个网站的页面,其实就是访问服务器上对应的文件,浏览器只做请求和解析,会将获取到的内容解析成我们看到的页面,大多情况下默认访问的是 网站 / (根) 目录下的index.html或index.php等,目录遍历是服务器没有正确配置或者没有这个文件,才会产生的漏洞

官方解释是:

目录浏览漏洞是由于网站存在配置缺陷,存在目录可浏览漏洞,这会导致网站很多隐私文件与目录泄露,比如数据库备份文件、配置文件等,攻击者利用该信息可以更容易得到网站权限,导致网站被黑

攻击者通过访问网站某一目录时,该目录没有默认首页文件或没有正确设置默认首页文件,将会把整个目录结构列出来,将网站结构完全暴露给攻击者; 攻击者可能通过浏览目录结构,访问到某些隐秘文件(如PHPINFO文件、服务器探针文件、网站管理员后台访问地址、数据库连接文件等)

解题思路:

这里拿别人的图片写的文章,不是我自己的,点击开始寻找flag后就会跳转到存在目录遍历的页面

目录遍历没什么好说的,直接上Dirsearch,或者在线扫描等工具扫描即可,不过这题比较简单,即使不扫描,一个个找下去就能找到,每次开启不同的环境,flag也会不同,我就是一个一个点的,比工具扫描速度快,这题主要是为了帮助理解这个漏洞

phpinfo:

题目:

phpinfo

考点:

phpinfo() 是PHP内置的一个函数。当在PHP脚本中调用该函数时,它会生成一个详细的HTML页面,显示关于当前PHP环境的几乎所有配置信息

phpinfo() 的输出被组织成多个模块化的章节,每一部分都揭示了不同层面的信息

phpinfo泄露的原理是:开发者将包含 phpinfo() 函数的调试脚本遗留在生产环境的Web目录中,导致任何用户都能访问该页面,从而获取关于服务器PHP环境的极度敏感和详细的配置信息

具体会泄露什么内容和为什么泄露感兴趣的可以看看这篇文章:点此查看

解题思路:

启动环境,访问页面,直接就可以看到点击查看phpinfo,点进去就可以看到phpinfo的页面,flag就在其中,所以我们直接 ctrl+f 搜索 ctfhub/FLAG 即可

备份文件下载:

网站源码备份:

题目:

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露

考点:

为了方便或其他原因,会对网站的所有文件进行备份,比如网站搬迁,页面修改等等,所以我们可以通过备份文件查看网站的目录结构或者详细的文件

常见的网站源码备份文件后缀

常见的网站源码备份文件名

如果备份文件没有删除,直接访问备份文件即可下载

解题思路:

这里它给出了一些常见的,可以直接拼接,然后访问看看,能访问到就找到备份文件了,或者使用Dirsearch,然后扫描出一个www.zip的备份文件

dirsearch -u <目标URL> -e <扩展名列表>

这里可以直接用 -e 参数指定这些常用的后缀名,会快一些

这里访问www.zip下载到本地打开,可以看到有一个flag文件,但是打开后里面并没有flag,回想考点,既然这是备份文件,那么说明在这个服务器备份时,存在这么一个flag的文件,可能后面进行过修改内容,复制文件名到浏览器访问,可以直接看到输出了flag

bak文件:

题目:

当开发人员在线上环境中对源代码进行了备份操作,并且将备份文件放在了 web 目录下,就会引起网站源码泄露

考点:

资源管理器里面随便找个文件,然后复制粘贴一份,你就会发现旧文件会被改名为:源文件名 + .bak 或者 新文件名字变成 源文件名前缀 – 副本.后缀

同理有些时候网站管理员可能为了方便,会在修改某个文件的时候先复制一份,将其命名为xxx.bak。而大部分Web Server对bak文件并不做任何处理,导致可以直接下载,从而获取到网站某个文件的源代码

解题思路:

开启环境,提示我们 flag 在 index.php 文件里面,结合考点,我们直接访问 index.php.bak 就能下载备份文件,我用的是 notepad++ 打开,或者 vscode 等都行,就能够查看到 flag 在其中,notepad++ 打开文件比较快,启动也比 vscode 快,所以我比较常用,适用于快速查看内容或修改内容,正常写代码还是用 vscode 的

Vim缓存:

题目:

当开发人员在线上环境中使用 vim 编辑器,在使用过程中会留下 vim 编辑器缓存,当vim异常退出时,缓存会一直留在服务器上,引起网站源码泄露

考点:

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

以 index.php 为例:第一次产生的交换文件名为 .index.php.swp

再次意外退出后,将会产生名为 .index.php.swo 的交换文件

第三次产生的交换文件则为 .index.php.swn

解题思路:

根据提示,我们查看index.php源码,发现没有 flag, 结合考点,猜测可能是在备份文件中,然后访问下载恢复就能够得到 flag

这个题目我是真的想要吐槽,我按照别人的wp做的,然后到我自己的博客服务器(迷你主机出了点问题连不上)去恢复,为了防止文件名相同导致的冲突,我还将我博客目录下的index.php暂时放到回收站了,结果就是出问题(恢复后的 flag 只有一半),然后用另一个方法 curl 一直报错,后来加了一个参数才解决,然后才看到 flag (耽误了我不少时间)

这中间我还以为题目更新了,将 flag 切割后分别放到三个文件里面了,结合考点,所以我三个文件都访问了一一遍,最后还是只有一个可以下载,其他的显示没有文件,windows 浏览器下载后是 index.php.swp ,放到 linux 环境,用 mv 改名为 .index.php.swp ,然后用 vim -r .index.php.swp 或者 vim index.php 然后选择 r 回车就会恢复文件,恢复后的内容就是下图这样

所以我做这一题的时候是真的绷不住了,什么题目啊,恢复只有一半 flag ,折腾了几个小时,把迷你主机搞好后通过迷你主机 curl ,提示需要一个参数,我也不知道为什么别人的 wp 没有加这个参数就直接显示出来了,我这边最后加了这个参数 –output downloaded.swp 才获取到的,然后 cat 一下就拿到了完整的 flag

.DS_Store:

题目:

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单

考点:

.DS_Store 是 Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单

解题思路:

既然 .DS_Store 可以知道这个目录里面所有文件的清单,那我们就尝试获取这个文件(注意 linux 服务器对大小写敏感,所以一定不要写成小写的了),打开环境后直接访问这个文件,然后就会下载这个文件,然后放到 linux 环境里面 cat 一下,就能够获取到一个 txt 文件的名字

可能是这个作者做了两遍,所以文件名不一样,如果是上图,因该是68开头 txt 结尾,复制文件名到浏览器 url后面,就可以看到返回了 flag

这里可以看到文件名不一致,可能是第二次做题,自己做题的话还是以自己的为准,每次环境变更都会生成一个新的文件名,flag 也会变更,这是为了防止有人直接泄露 flag 写无意义的 wp

Git泄露:

Log:

题目:

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

考点:

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞

解题思路:

可以看到题目有给出提示,使用GitHack完成题目,那么我们先去github下载一下这个工具

点击下载

下载后发现 python3 无法运行才知道是用 python2写的,为了后续方便,干脆下了一个 python2 的环境,命名为pyhon2,然后加到环境变量

使用方法:

python2 GitHack.py http://www.example.com/.git/

然后打开环境,访问页面,发现页面没有提供什么有用的信息之后,使用 dirsearch 扫描一下目录,不过结合题目和考点,肯定是有一个 .git 目录的,所以我就没有扫目录了,免得浪费时间,然后直接复制 url 用工具恢复网站源代码

结合题目名,我们使用 git log 查看历史记录

当前所处的版本为 remove flag,flag 在 add flag 这次提交中

add flag 9b5b58…… 这次提交进行比对

命令如下:

git diff 9b5b583530f59c07fc62f457066d4ebd81db9782

然后就可以看到输出的内容中包含了 flag

当然也可以使用这条命令切换到对应版本,然后在目录下直接查看:

git reset --hard 9b5b583530f59c07fc62f457066d4ebd81db9782

以上内容来自这篇文章:点击查看

Stash:

题目:

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

考点:

git stash 的作用:

git stash 用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作.git stash将本地的修改保存起来,并且将当前代码切换到 HEAD 提交上

通过 git stash 存储的修改列表,可以通过 git stash list 查看. git stash show 用于校验, git stash apply 用于重新存储.直接执行 git stash 等同于 git stash save

最新的存储保存在refs/stash中.老的存储可以通过相关的参数获得,例如 stash@{0} 获取最新的存储,stash@{1}获取次新 stash@{2.hour.ago} 获取两小时之前的存储可以直接通过索引的位置来获得 stash@{n}

git stash 的概念理解:

git stash 的每个存储单元在工作仓库中是通过 commit 的形式由树结构展示的,它的根节点是 HEAD 所在的提交

这么看是不是有点难以理解,我也没理解,所以让ai转成简单易懂的表达,它举了一个例子,很形象:

你正在写一份报告(正在修改代码),这个时候老板突然让你查一下昨天的资料(需要你切换到另一个任务),这时你就会面临一个问题,你手头的报告写了一半,还没完成,不能直接保存为最终版本(也就是不能直接 commit),但是你又必须立刻去处理老板的新任务,这需要在一个“干净”的桌面上进行

  • git stashgit stash save:相当于你飞快地把桌上写了一半的草稿纸(你的修改)揉成一团,塞进抽屉(存储区),让桌面瞬间恢复整洁(代码回到最后一次提交的状态)。这样你就可以安心处理老板的任务了
  • git stash list:相当于你打开抽屉,看看里面都塞了哪些“纸团”。它会显示一个列表,比如:
    • stash@{0}: WIP on main: 5d2f3e5 添加了登录功能 (最新的)
    • stash@{1}: WIP on main: a1b2c3d 修复了某个bug (稍早的)
  • git stash pop:处理完老板的任务后,你从抽屉里拿出最近塞进去的那个纸团(stash@{0}),把它重新铺在桌上,继续工作。pop 会把这个纸团从抽屉里清掉。
  • git stash apply:和 pop 类似,也是把纸团拿出来铺开,但不把它从抽屉里清掉。这个纸团还在,你可以以后再用。如果你想应用一个特定的纸团,可以指定名字,如 git stash apply stash@{1}
  • git stash drop:当你确认某个“纸团”没用了,手动把它从抽屉里扔进垃圾桶。

理解上面讲述的内容再来做题,就会比较容易理解了

解题思路:

跟前面 log 题一样,先扫描目录,然后用工具 url/.git ,然后我们结合题目的考点,打开 dist 下的新文件夹,然后鼠标右键选择git base here,在打开的终端中输入 git stash list 查看一下有哪些存储

执行git stash pop — 会恢复之前缓存的工作目录,同时将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1})

然后就可以看到目录下出现了新的文件,直接 cat 查看就能够获取到 flag

以上内容来自于这篇文章:点击查看

Index:

题目:

当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题

考点:

Git Index(索引),通常被称为 暂存区(Staging Area),是 Git 版本控制系统中的一个核心概念和关键文件(通常位于 .git/index)。它扮演着一个中间区域的角色,是工作目录(Working Directory)和版本库(Repository)之间的桥梁

可以使用 git ls-files --stage 命令以可读的方式查看当前 Index 的内容

在 CTF 安全挑战中,如果 .git 目录被意外暴露在网站上,攻击者下载到 index 文件后,可以解析出所有文件的路径及其哈希值,从而系统地下载并重建整个网站的源代码,造成严重的信息泄露

  • 暂存修改当你在工作区修改文件后,需要通过 git add <文件名> 命令将修改添加到 index 中。此时,index 会记录这些修改的快照,作为 “下次提交的候选内容”。
  • 准备提交执行 git commit 时,Git 会根据 index 中记录的内容创建一个新的提交(commit),而非直接提交工作区的当前状态。这意味着:
    • 未添加到 index 的修改不会被提交。
    • 可以通过多次 git add 分批暂存不同文件的修改,最后一次性提交

解题思路:

还是跟前面一样,扫描目录,然后用工具,再然后进入目录,然后使用 git ls-files –stage命令,显示 Git 暂存区(index)中所有文件的详细信息,输出的内容可以对照下表查看

┌──(root㉿kali)-[/home/…/ljn/GitHack/dist/challenge-6beed917c9e95bdb.sandbox.ctfhub.com_10800]
└─# git ls-files --stage
100644 60305a288cf10d2d765d563c5ae4aa4df6b9c284 0       2108123121414.txt
100644 9071e0a24f654c88aa97a2273ca595e301b7ada5 0       50x.html
100644 2c59e3024e3bc350976778204928a21d9ff42d01 0       index.html

然后到查看这一步就卡住了,其他的文章或者博客都是直接查看,但是到我这就没有这个txt文件,最后询问ai解决的:

根据你的描述,你已经在 master 分支上,所以通常直接检出即可。但如果你没有看到文件,可能是工作目录没有被更新。请先尝试 git checkout

另外,你也可以通过 Git 命令直接从对象库中提取文件。因为你知道文件的哈希值(如 201e4808fc408b201790c639f4473b38b5fe12fe),可以使用:

git cat-file -p 201e4808fc408b201790c639f4473b38b5fe12fe > 282852547928107.txt

然后 cat 282852547928107.txt 就能够看到 flag 了

以上内容包含这个图片中的表格来自这篇文章:点击查看

SVN泄露:

题目:

当开发人员使用 SVN 进行版本控制,对站点自动部署。如果配置不当,可能会将.svn文件夹直接部署到线上环境。这就引起了 SVN 泄露漏洞。

考点:

SVN(subversion)是程序员常用的源代码版本管理软件。在使用 SVN 管理本地代码过程中,使用 svn checkout 功能来更新代码时,项目目录下会自动生成隐藏的.svn文件夹(Linux上用 ls 命令看不到,要用 ls -al 命令),其中包含重要的源代码信息

造成SVN源代码漏洞的主要原因是管理员操作不规范,一些网站管理员在发布代码时,不愿意使用“导出”功能,而是直接复制代码文件夹到WEB服务器上,这就使得.svn隐藏文件夹被暴露于外网环境,黑客对此可进一步利用:

可以利用其中包含的用于版本信息追踪的 entries 文件(.svn/entries 文件),获取到服务器源码、svn服务器账号密码等信息

可以利用 wc.db 数据库文件(.svn/wc.db 文件),获取到一些数据库信息

更严重的问题在于,SVN产生的.svn目录下还包含了以.svn-base结尾的源代码文件副本(低版本SVN具体路径为text-base目录,高版本SVN为pristine目录),如果服务器没有对此类后缀做解析,则可以直接获得文件源代码

在 svn1.6 及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base

在 svn1.7 及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份

解题思路:

说实话,这题我全程跟着别人的wp或者ai分析来的,结果做完还是有点迷糊,先下载工具,为了方便(不用安装perl,一种脚本语言),我直接使用的是我的迷你主机,上面已经有perl,使用perl -v就可以看到相关信息

然后安装这个工具:dvcs-ripper ,下载地址:点击跳转

这里我显示创建了一个tools工具目录,然后切换到这个目录下,然后git clone克隆这个项目到本地

进入工具目录,可以直接使用了,不过别人的wp里面写了,最好把扩展安装一下,要不然后面有个文件会是空的,反正我也搞不懂,跟着来就是

运行这个命令安装依赖库

sudo apt-get install perl libio-socket-ssl-perl libdbd-sqlite3-perl libclass-dbi-perl libio-all-lwp-perl

安装完成后,我们使用这个命令将泄露的文件下载到本地目录中

perl rip-svn.pl -u http://challenge-099543f846ed13e7.sandbox.ctfhub.com:10800/.s
vn

下载完后我们ls -al 一下,因为.开头的是隐藏文件,所以需要用al ,然后就可以看到我们目录下多了一个.svn目录

然后我们切换到 .svn 目录下,ls 一下可以看到一个 wc.db 文件,这个文件前面我通过Dirsearch爆破出来过,然后直接访问下载了,但是不知道怎么用

这里是看别人文章才知道的,cat 一下这个文件,grep 查找 flag 字眼,这里返回了一个文件名,然后我按照ai的教程通过在线的工具也是只查到了这一步,然后重新看了一下页面提示,说是在旧版本的源代码中

结合考点和ls查到的目录,推测在pristine里面,所以cd到这个目录里面再查看一下,发现只有两个结果,一个是8a,一个是bf ,切换到8a里面,发现有一个.svn-base的文件,跟考点里面的差不多,可能就是flag的文件备份,然后cat 输出一下,就返回了flag

我看的wp1:信息泄露3-(SVN泄露+如何使用dvcs-ripper扫描svn漏洞以及如何还原文件+HG泄露 – sun010 – 博客园

我看的wp2:CTFHub | SVN泄露_ctfhubsvn泄露-CSDN博客

我看的wp3:Web安全-SVN信息泄露漏洞分析_svn漏洞-CSDN博客

HG泄露:

题目:

当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞

考点:

Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目

在 Mercurial 轻量级分布式版本控制系统中,本地既可以当做版本库的服务端,也可以当做版本库的客户端。版本库与工作目录不同,版本库存放了所有版本,而工作目录只是因为特定需要存放特定版本。与 SVN 系统不同,SVN 的版本库集中在一台服务器中。这也导致很多初次使用 Mercurial 系统的工作者,因为操作失误导致出现 HG 泄露漏洞的主要原因

解题思路:

题目给出的提示是flag在服务端旧版本的源代码中,不太好使的情况下,试着手工解决,那就说明

还是一样,使用前面安装的工具dvcs-ripper

可以看到有些资源是404,或许这就是题目所说的不太好使的情况,那么用 tree 查看一下目录结构,发现一个last-message.txt的文本文件

那么我们查看一下这个文本文档

发现输出了历史版本 add flag,那么我们就用关键词查找一下

可以看到有一个flag文件,输出了文件名,但是没有内容,那么可能在服务器上面,尝试访问这个文件就获取到了flag

我看的wp1:CTFHub | HG泄露_ctfhub hg泄露-CSDN博客

我看的wp2:信息泄露 – HG泄露 – 《⚔️CTF》 – 极客文档

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇