【Hackthebox 中英 Write-Up】Web Request | 分析 HTTP 请求和响应

欢迎来到我的writeup分享!我希望大家不要只关注结果或答案,而是通过耐心阅读,尝试逆向工程理解背后的运作原理。在这里,你不仅能找到解题的思路,还能学到更多与Hack The Box等平台相关的技术和技巧,期待与你们一起成长为更优秀的黑客!

在这里插入图片描述废话不多说,我们开始解题啦~


在这里插入图片描述

Objective | 目标

The goal of this task was to simulate user behavior, bypass the frontend interface, and interact directly with the backend to retrieve the flag by analyzing HTTP requests and responses.

目标是模拟用户行为,绕过前端界面,直接与后台交互,通过分析 HTTP 请求和响应获取 flag。


Environment Setup | 环境设置

  1. Target URL | 目标地址:
    http://94.237.62.184:57129/
  2. Credentials | 登录凭据:
    Username: admin
    Password: admin

Steps | 操作步骤

Step 1: Authentication via cURL | 使用 cURL 登录

Run the following command in the terminal to authenticate and verify the server is accessible:

在终端运行以下命令进行身份验证并确认服务器可访问:

curl -u admin:admin http://94.237.62.184:57129/

Explanation | 解释:

  • curl: Command-line tool for making HTTP requests.
    用于发送 HTTP 请求的命令行工具。
  • -u admin:admin: Sends the Basic Authentication credentials (admin and admin).
    使用 Basic Auth 方式发送用户名和密码。
  • http://94.237.62.184:57129/: The target URL to test server access.
    目标服务器的 URL。

Result | 结果: This verifies that the credentials are valid and the server is accessible.

验证凭据有效,并确认服务器可以访问。


Step 2: Inspect script.js for Search Functionality | 在 script.js 中检查搜索功能

  1. Open the browser and visit the target URL.
    打开浏览器并访问目标 URL:

    http://94.237.62.184:57129/
    
  2. Open the Developer Tools in the browser (Ctrl+Shift+I or Cmd+Option+I) and navigate to the Sources tab.
    打开浏览器的 开发者工具,切换到 Sources 标签页。

  3. Look for the file script.js. Search within it for search.
    找到 script.js 文件,并在其中搜索关键字 search

Observation | 观察:
You will find the following code:

fetch(`/search.php?search=${input.val()}`);

This indicates that the backend search functionality is handled via the /search.php endpoint with a parameter search.

这说明后台搜索功能通过 /search.php 接口处理,参数为 search


Step 3: Send the cURL Request | 发送 cURL 请求

Use the knowledge from the script.js file to directly construct a search query for flag:

根据 script.js 文件的信息,直接构造搜索 flag 的请求:

curl 'http://94.237.62.184:57129/search.php?search=flag' -H 'Authorization: Basic YWRtaW46YWRtaW4='

Explanation | 解释:

  • 'http://94.237.62.184:57129/search.php?search=flag': Sends a request to the search.php endpoint with the flag parameter.

    发送带有 search=flag 参数的请求到 search.php

  • -H 'Authorization: Basic YWRtaW46YWRtaW4=': Adds an HTTP header for Basic Authentication, where YWRtaW46YWRtaW4= is the Base64 encoding of admin:admin.

    添加 HTTP 认证头,其中 YWRtaW46YWRtaW4= 是用户名和密码 admin:admin 的 Base64 编码。

Result | 结果: The command returns the flag in the response:

命令返回响应,其中包含 flag:

HTB{curl_g3773r}

HTB{curl_g3773r}


在这里插入图片描述

Why This Works | 背后原理

  1. Backend APIs Are Exposed | 后端接口暴露:
    The /search.php endpoint is directly accessible and processes input without strict validation or user restrictions.

    /search.php 接口可以直接访问,并处理输入,而没有严格的验证或用户权限限制。

  2. Bypassing the Frontend | 绕过前端:
    Instead of interacting with the frontend (browser), we directly sent requests to the backend using curl. This allows us to bypass restrictions or additional checks imposed by the frontend.

    我们绕过浏览器前端的交互,直接使用 curl 向后端发送请求,从而绕过了前端的限制或额外验证。

  3. Understanding HTTP Basics | HTTP 基础原理:
    By analyzing script.js, we identified how the application communicates with the backend. This is a common way to understand and exploit poorly protected APIs.

    通过分析 script.js,我们理解了应用如何与后端通信。这是理解并利用保护不当的 API 的常见方法。


Applications in Real Life | 实际应用

  1. For Ethical Hacking and Penetration Testing | 用于道德黑客和渗透测试:

    • These techniques are used to identify and report security vulnerabilities in websites.
      这些技术用于识别并报告网站的安全漏洞。
    • For example, poorly protected APIs can expose sensitive user data or allow unauthorized access.
      例如,保护不当的 API 可能暴露敏感用户数据或允许未经授权的访问。
  2. To Protect Your Own Website | 用于保护自己的网站:

    • Ensure all backend endpoints require authentication and validate user inputs.
      确保所有后端接口需要认证,并验证用户输入。
    • Avoid exposing sensitive APIs or debug functionalities to public access.
      避免向公众开放敏感 API 或调试功能。

Conclusion | 结论

  1. We successfully retrieved the flag by directly interacting with the backend API.

    我们通过直接与后端 API 交互成功获取了 flag。

  2. This process demonstrated how developers can unintentionally expose vulnerabilities, highlighting the importance of secure API design.

    此过程展示了开发者如何无意中暴露漏洞,强调了安全 API 设计的重要性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 点对点语音通话及直播推流实践一: linux USB声卡或耳机 基本配置

inux USB声卡或耳机 基本配置 工具安装查看设备录放音操作录音放音声音配置获取控制信息音量配置本文介绍 linux下alsa声音原件 工具使用方法,包括设备查询、声卡基本配置、录音放音等。 保证 alsa套件可正常操作和配置声卡,是实现SIP语音通话、音视频 采集及推拉流功能的基础…

《优势谈判》——阅读笔记

投入 思想准备:一个谈判是要双赢的,至少需要让对手这么认为;进行一场谈判,需要看到对面是否真的愿意和你谈判 谈判技巧 永远不要接受首次报份;如果对方临时变更了要求,则可以通过立刻要求对方做补偿等方…

PPT画图——如何设置导致图片为600dpi

winr,输入regedit打开注册表 按路径找,HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\PowerPoint\Options(xx为版本号,16.0 or 15.0或则其他)。名称命名:ExportBitmapResolution 保存即可,…

高性能网络框架--fstack

【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 Fstack 是一个高性能的网络框架,主要用于构建高性能的网络应用程序,特别是在处理大量并发连接时。它基于 Linux 的 epoll 机制,使用了多线程和事件驱动的编程模型。以下是对 …

电商项目-数据同步解决方案(三)商品上架同步更新ES索引库

一、 需求分析和业务逻辑 主要应用技术有:Feign远程调用, 消息队列-RabbitMQ ,分布式搜索引擎-ElasticSearch,Eureka,Canal 商品上架将商品的sku列表导入或者更新索引库。 数据监控微服务需要定义canal监听器&#x…

Unity游戏环境交互系统

概述 交互功能使用同一个按钮或按钮列表,在不同情况下显示不同的内容,按下执行不同的操作。 按选项个数分类 环境交互系统可分为两种,单选项交互,一般使用射线检测;多选项交互,一般使用范围检测。第一人…

前端正在被“锈”化

jeff Atwood 在 2007 年说:"any application that can be writen in JavaScript , willeventually be written in JavaScript",翻译过来就是:“任何可以使用 JavaScript 来编写的应用,并最终也会由 JavaScript 编写”&a…

穷举vs暴搜vs深搜vs回溯vs剪枝_全排列_子集

46. 全排列 递归解决:一开始选一个数,递归进入下一层再选一个新的数,直到到最后一个数。反会上一层遍历其它数。 每次递归到叶子节点就找到了一种组合,思路有了具体怎么实现? 1.怎么记录每条路径? 定义一个…

【openGauss】正则表达式次数符号“{}“在ORACLE和openGauss中的差异

一、前言 正则作为一种常用的字符串处理方式,在各种开发语言,甚至数据库中,都有自带的正则函数。但是正则函数有很多标准,不同标准对正则表达式的解析方式不一样,本次在迁移一个ORACLE数据库到openGauss时发现了一个关…

【代码随想录|完全背包问题】

518.零钱兑换|| 题目链接:518. 零钱兑换 II - 力扣(LeetCode) 这里求的是组合数,就是不强调元素排列的顺序,211和121是同一个数那种,要先遍历物品,这样的话我算出来的每个值才是按顺序121&…

go语言的成神之路-筑基篇-gin常用功能

第一节-gin参数绑定 目录 第一节-?gin参数绑定 ShouldBind简要概述 功能: 使用场景: 可能的错误: 实例代码 效果展示 第二节-gin文件上传 选择要上传的文件 选择要上传的文件。 效果展示? 代码部分 第三节-gin请求重定向 第…

Qt 12.28 day3

作业: 1】 思维导图 2】 在登录界面的登录取消按钮进行以下设置: 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&a…

mybatis-plus 用法总结

MyBatis-Plus(简称 MP)是 MyBatis 的增强工具,旨在简化开发者的 CRUD 操作。它在 MyBatis 的基础上提供了更多的功能和便利性,如代码生成器、分页插件、性能分析插件等,使开发者能够更高效地进行数据库操作。MyBatis-P…

Rust: enum 和 i32 的区别和互换

在Rust编程语言中,enum(枚举)和i32是两种不同类型的数据结构,它们各自有不同的用途和特性。 i32 i32是一个32位的有符号整数类型。它用于存储整数值,范围从-2,147,483,648到2,147,483,647。i32是Rust中的基本数据类型…

迁移学习 详解及应用示例

简介: 迁移学习是一种机器学习技术,其核心思想是利用在一个任务上已经学到的知识(源任务:任务已经有一个训练好的模型,然后我们将这个模型的某些部分或知识迁移到一个新的但相关的“目标任务”上。)来帮助解…

【ETCD】【实操篇(十五)】etcd集群成员管理:如何高效地添加、删除与更新节点

etcd 是一个高可用的分布式键值存储,广泛应用于存储服务发现、配置管理等场景。为了确保集群的稳定性和可扩展性,管理成员节点的添加、删除和更新变得尤为重要。本文将指导您如何在etcd集群中处理成员管理,帮助您高效地维护集群节点。 目录 …

前端 学习

vue结构 package.json 作用:记录项目的元信息,包括依赖包、脚本命令、项目名称、版本号等。 常见字段: dependencies:运行时依赖的 npm 包。 devDependencies:开发时使用的依赖包。 scripts:定义 npm 脚本…

矩阵的因子分解1-奇异值分解

文章目录 矩阵的因子分解1-奇异值分解求法归纳例1. 对矩阵 A ( 0 1 − 1 0 0 2 1 0 ) A \begin{pmatrix} 0 & 1 \\ -1 & 0 \\ 0 & 2 \\ 1 & 0 \end{pmatrix} A ​0−101​1020​ ​ 进行奇异值分解1. 计算 A H A A^H A AHA 的特征值和特征向量2. 将奇异值按…

网易企业邮箱登陆:保障数据安全

网易企业邮箱是一款为企业提供安全可靠的电子邮件服务的工具。通过网易企业邮箱,企业可以实现员工之间的高效沟通和信息共享,同时保障数据的安全性。 企业邮箱的安全性是企业信息保护的重要组成部分。网易企业邮箱采用了多层加密技术,确保邮件…

王佩丰24节Excel学习笔记——第二十二讲:制作甘特图与动态甘特图

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 插入图表,针对每一个图表上的元素,都可以选中选右键进行修改数据;本章中的向两端延伸,设置数据的原理;数据格式的显示方式&…