一个 Web 靶场的纯思路文.....

admin 2025年2月27日14:39:36评论11 views字数 3532阅读11分46秒阅读模式

 某天,群里有个小伙伴分享了一个靶场,许久没打靶的我,逐渐的产生了一丝兴趣... 于是,故事开始了...

本文为实战记录,并非攻略,且此次打靶除使用 GPT 帮写部分脚本外,几乎没有使用百度等网络资源。

所以文中会包含大量的思路描述与试错过程,不要觉得无聊,试错才是积累经验最快的方式。

文章比较长,为了提高文章质量,一些必要性不大的截图修改为了文字描述。
一个 Web 靶场的纯思路文.....

01

信息收集
第一步,打开浏览器开发者模式,访问靶场,针对每个可以访问到的页面文本、HTML 源码开展信息收集。
一个 Web 靶场的纯思路文.....

index.php 收集到信息如下:

  1. (页眉文本)电话号码: +254 002 100 500

  2. (页眉文本)邮箱地址:[email protected]

  3. (HTML源码)邮箱实际指向:[email protected]

  4. (源码注释)authorEthredah

  5. (源码注释)URLhttp://ethredah.github.io

  6. (页脚文本)邮箱输入框,根据英文描述,输入邮箱可以订阅最新消息

about.php 收集到信息如下:

  1. (页面文本):flag 格式为 Flag{xxxxx-xxxxx-xxxxx-xxxxx}

  2. (页面文本):禁止使用 Web 扫描、端口扫描、DDOS 等

  3. (页面文本):可以使用轻量级目录扫描

portfolio.php 收集到的信息如下:

一个 Web 靶场的纯思路文.....

blog.php 收集到的信息如下:

  1. (页面文本)用户名:Admin

  2. (页面文本)生日:2019-10-27

  3. (页面文本)密码:p3ssw0rd

  4. (页面超链接/HTML源码)single.php 页面,参数 ?id=xxx
一个 Web 靶场的纯思路文.....

contact.php 收集到的信息如下:

  1. (页面文本)一个表单,可提交 name、email、message,且 message 是个富文本;

  2. (HTML源码)表单是个 post 请求,且目标 url 为 /functions/contact.php
一个 Web 靶场的纯思路文.....

single.php 收集到的信息如下:

  1. (页面文本)一个表单,name、comment,且 comment 是富文本;

  2. (HTML 源码)表单是 post 请求,且目标 url 为 /functions/comment.php

02

分析收集结果

分析整理上一步中收集到的结果:

  1. index.php 的注释中发现 github 链接,这极有可能是开源项目二次开发,如果能拿到源码,那必然事半功倍。(结果:404. 或许曾经有,但现在 github 上确实没有了
  2. github 链接 404 了,但是还有作者名,直接搜索了一下作者大名 Ethredah,果然,首页一个名为 PHP-Blog-Admin 的项目,点进去之后项目结构与之前收集的页面名称极其相似(结果:为了让题目有点挑战性,决定先不看,实在没有头绪了再看)。
  3. 一个 Web 靶场的纯思路文.....
  4. 顺手在页脚的“订阅邮箱”尝试了收集到的两个邮箱和自己的个人邮箱(结果:抓包后发现请求返回 200,但多次尝试,并未收到任何信件

  5. about.php 提示可以轻量级目录爆破,对根目录进行目录爆破。(结果:并没有什么新的发现
    一个 Web 靶场的纯思路文.....
思考:
根据 github 上的项目名称描述,这应该是个博客网站,很有可能结构与 wordpress 类似,那也就大概率会存在一个类似于 wp-admin 的后台管理界面
而且既然是靶场,那 flag 极大概率是在服务器某个目录下(极小概率的入门级靶场才会隐藏在客户端源码内),要读取服务器文件,那要重点关心的就四个点:1. 文件上传;2. 文件包含;3. SQL 注入;4. 越权接口
结合目前获取到的信息,需要重点关注的有以下四点:
  1. 1. 能否找到后台管理界面?
  2. 2. 两个 form 表单是否会存在 SQL 注入?富文本域无法上传图片附件,XSS 即使存在目前看来利用价值也不高,所以暂时不必优先关心
  3. 3. single.php 页面传递了一个参数 id,似乎为博客 id,是否存在注入可能?
  4. 4. functions 目录下存在一些接口(已知的有 2 个,是否可以越权调用,是否还能找到其他的类似接口?
03

寻找入口

目标:找到后台登录地址;

找后台地址,首先想到的必须是 robots.txt 文件,直接尝试访问:

一个 Web 靶场的纯思路文.....

居然 disallowed 了 /1234 目录,不知何意,尝试访问发现 404,完全没有意义。

既然 robots.txt 中没有,那就只能再次进行目录扫描了。

一个 Web 靶场的纯思路文.....

有新发现

/Company_admin/login.php/Company_admin/index.php

index.php 页面首次访问时返回了文本信息: "hold on",猜测应该是包含一个请求,由于参数不正确所以才会如此回显

login.php 页面则直接为后台登录页面

一个 Web 靶场的纯思路文.....

登录表单共需要 4 个参数:邮箱、密码、4位数字码、验证码

post 请求,最终提交到 /Company_admin/login.php

并且,还有两个新发现!

一个被注释掉的表单(如上图),根据标题可以推测是“重置密码”的表单,post 请求,提交到 /Company_admin/index.php 页面。

两个被注释掉的字段,在“验证码”与“Login”按钮中间(但观察代码似乎并无价值)

不过。尝试多次请求,发现验证码有效无法绕过,也就是说无法使用大字典进行爆破了。

整合上面收集到的信息

# 用户名AdminEthredah# 邮箱[email protected][email protected]# 还记的之前页脚有一个订阅邮箱,我填了自己的邮箱(这里脱敏),虽然返回了 200,但并没有收到任何信息,但这个邮箱也不能忘了尝试,万一是创建了账号呢[email protected]  # 生日20191027# robots 文件1234# 密码p3ssw0rd

组成一个针对性的字

# 邮箱[email protected][email protected][email protected][email protected][email protected][email protected]# 密码p3ssw0rd123456# 4位数字1234201910271910
一个 Web 靶场的纯思路文.....

多次尝试之后,发现回显信息都为 No account found with that email

邮箱是不正确的

那接下来准备将 HTML 源码中的注释取消,尝试一下这个所谓的“重置密码”表单

直接右击,以“HTML 格式修改”,然后删掉最前面的注释符号 <!--

一个 Web 靶场的纯思路文.....

回车确认,发现 HTML 中代码的颜色已经变了(说明不再作为注释了),但左侧页面中 form 表单并未展示出来

仔细看,下方的样式栏位,还有一个 display: none 的属性,这是“不展示”的意思,鼠标放上去,取消前面的√,让它展示出来。

一个 Web 靶场的纯思路文.....

可以看到左侧页面中已经出现了 “Recover Password” 字样,但是下方应该还有个“Submit”按钮没显示出来。

直接用同样的方法,把 Login 表单 display:none

一个 Web 靶场的纯思路文.....

输入一个邮箱,点击 Reset,发现请求是 200 成功的,但没有任何后续(比如输入新密码),输入自己的邮箱,也没有收到任何信件。

抓包发现,请求包没有任何参数的(email 没有被作为参数传递)

一个 Web 靶场的纯思路文.....

检查页面发现,input 标签没有 name 属性,难怪,右键,添加一个属性,name = "email",再次尝试(也可以直接在 bp 中加上 name 属性重发)

我比较喜欢在页面上操作去发送请求,然后在 BP 里面只改参数值,因为这样可以避免考虑参数的传参格式、请求类型等问题。

一个 Web 靶场的纯思路文.....

抓包看到参数正常传递了,但是依然没有效果

一个 Web 靶场的纯思路文.....

思考 ing ......

休息一下

04

SQL 注入

既然隐藏的表单无效,那就不在这里较真了。

按照最开始分析的思路,需要关注 4 个点:1. 文件上传;2. 文件包含;3. SQL 注入;4. 越权接口

现在,后台登录入口已经找到,那么“文件上传”、“文件包含”这两个功能,大概率是会在后台管理模块,并且:

“文件上传”功能很可能是在后台管理的“头像上传”“博客内附件上传”、“博客静态资源上传”中;

“文件包含”功能很可能是在“博客模板包含”、“博客主题自定义”中;

想到这里,心中已经开始提前激动了

那现在剩下的关注点就已经明确了:SQL 注入、越权接口

先从 SQL 注入下手

回看之前收集的信息,在 blog 页面,收集到一个 single.php?id=xxx 的页面,这是从博客列表,进入博客详情的页面,而 id,基本可以确认就是博客的 id。

看到这个 ?id=xxx 的 url 结构,标准的 SQLMap 示例语句,这谁忍得住呀?

说实话最开始看到的时候我就想试它了,但一直觉得肯定有个后台入口,就强忍着内心的蠢蠢欲动先去探索后台入口了。

现在,终于

依稀记得,好像没说不能用 SQLMap 扫描吧?

开整

emmm

一个 Web 靶场的纯思路文.....

这里居然没有注入点?

试试上面收集到的几个表单(全部注入失败)

一个 Web 靶场的纯思路文.....

看到一连串的提示

原文始发于微信公众号(网安小趴菜):一个 Web 靶场的纯思路文.....

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月27日14:39:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一个 Web 靶场的纯思路文.....https://cn-sec.com/archives/3777490.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息