【Hackthebox 中英 Write-Up】Manipulating a CRUD API | 操控 CRUD API:一步步提取 Flag

在这里插入图片描述

Objective | 目标

This challenge demonstrates how to interact with a CRUD API to perform Update, Delete, and Search operations to retrieve the flag.

本次挑战旨在演示如何与 CRUD API 交互,通过执行 更新删除搜索 操作来获取 Flag。


操控 CRUD API:一步步提取 Flag

Steps | 操作步骤

Step 1: Retrieve the Current List of Cities | 获取现有城市列表

  1. Use the GET method to retrieve all entries in the database: 使用 GET 方法检索数据库中的所有条目:

    curl -s http://94.237.54.42:48263/api.php/city/ | jq
    
  2. Output Example | 输出示例:

    [{"city_name": "London","country_name": "(UK)"},{"city_name": "Birmingham","country_name": "(UK)"},...{"city_name": "Memphis","country_name": "(US)"},{"city_name": "Baltimore","country_name": "(US)"}
    ]
    

    Analysis | 分析:
    From this list, we can select any city for the Update and Delete operations. Here, we choose Memphis to update and Baltimore to delete.


Step 2: Update a City’s Name to ‘flag’ | 更新城市名称为 ‘flag’

  1. Use the PUT method to update the city Memphis to flag: 使用 PUT 方法将城市 Memphis 更新为 flag

    curl -X PUT http://94.237.54.42:48263/api.php/city/Memphis -d '{"city_name":"flag", "country_name":"HTB"}' -H 'Content-Type: application/json'
    
  2. Explanation | 说明:

    • -X PUT: Specifies the HTTP method as PUT.
      指定 HTTP 方法为 PUT
    • -d '{"city_name":"flag", "country_name":"HTB"}': Sends the updated city name and country in JSON format.
      以 JSON 格式发送更新后的城市名称和国家。
    • -H 'Content-Type: application/json': Sets the content type to JSON.
      设置内容类型为 JSON。

Step 3: Delete Another City | 删除其他城市

  1. Use the DELETE method to delete the city Baltimore:
    使用 DELETE 方法删除城市 Baltimore

    curl -X DELETE http://94.237.54.42:48263/api.php/city/Baltimore
    

    Explanation | 说明:

    • -X DELETE: Specifies the HTTP method as DELETE.
      指定 HTTP 方法为 DELETE

Step 4: Search for the City Named ‘flag’ | 搜索名称为 ‘flag’ 的城市

  1. Use the GET method to search for the city flag:
    使用 GET 方法搜索城市 flag

    curl -s http://94.237.54.42:48263/api.php/city/flag | jq
    
  2. Output Example | 输出示例:

    [{"city_name": "flag","country_name": "HTB{crud_4p!_m4n!pul4t0r}"}
    ]
    

    Result | 结果:

    The flag is found in the country_name field:
    Flag 位于 country_name 字段中:HTB{crud_4p!_m4n!pul4t0r}


Summary | 总结

Key Steps Recap | 关键步骤回顾

  1. Retrieve Cities: Listed all available cities using a GET request.

    获取城市:使用 GET 请求列出所有可用城市。

  2. Update City Name: Updated Memphis to flag using a PUT request.

    更新城市名称:使用 PUT 请求将 Memphis 更新为 flag

  3. Delete Another City: Deleted Baltimore using a DELETE request.

    删除其他城市:使用 DELETE 请求删除 Baltimore

  4. Search for Flag: Retrieved the flag by searching for the city flag.

    搜索 Flag:通过搜索城市 flag 找到 Flag。


Flag | Flag

HTB{crud_4p!_m4n!pul4t0r}

Purpose of the Test | 测试目的

  1. Understand CRUD Operations | 理解 CRUD 操作:

    • Practice creating, reading, updating, and deleting database entries through an API.

      练习通过 API 创建、读取、更新和删除数据库条目。

  2. Direct API Interaction | 直接与 API 交互:

    • Gain hands-on experience interacting with APIs to manipulate backend data.

      通过直接操作 API 熟悉后端数据的操控。

  3. Simulate Real-World Scenarios | 模拟真实场景:

    • Understand how unauthorized access to APIs can lead to unintended data modifications.

      理解未授权访问 API 如何导致数据被篡改。


Best Practices | 最佳实践

  1. Restrict API Access | 限制 API 访问:

    • Ensure proper authentication and role-based access control for all API operations.

      确保所有 API 操作都进行适当的身份验证和基于角色的访问控制。

  2. Validate Input | 验证输入:

    • Sanitize all user inputs to prevent malicious data injections.

      清理所有用户输入以防止恶意数据注入。

  3. Log API Activities | 记录 API 活动:

    • Maintain logs of all API requests and responses to detect misuse.

      记录所有 API 请求和响应以检测滥用行为。

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

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

相关文章

【OpenGL ES】GLSL基础语法

1 前言 本文将介绍 GLSL 中数据类型、数组、结构体、宏、运算符、向量运算、矩阵运算、函数、流程控制、精度限定符、变量限定符(in、out、inout)、函数参数限定符等内容,另外提供了一个 include 工具,方便多文件管理 glsl 代码&a…

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源,请执行以下操作: 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录(例如,深色 UI 主题或本地化字符串的不同图像)。 依赖项和目录设置 要访问多平台项目中的资源…

线索二叉树的实现(c语言)

一、前言:什么是二叉树的线索化?(为什么要有二叉树的线索化?) 通过前面内容的学习,我们知道了二叉树的存储结构其实是通过二叉链表的方式实现的。但二叉链表由于每个结点均有左右孩子域,这使得…

通过python对excel进行数据分析和可视化

import pandas as pd import matplotlib.pyplot as plt import seaborn as snsfile_path "C:\\Users\\86138\\Desktop\\book_list-计算机-机器学习-linux-android-数据库-互联网.xlsx" data pd.read_excel(file_path)need_data data[[书名, 评分, 评价人数]].copy…

考研互学互助系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

SpringCloud整合skywalking实现链路追踪和日志采集

1.部署skywalking https://blog.csdn.net/qq_40942490/article/details/144701194 2.添加依赖 <!-- 日志采集 --><dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-logback-1.x</artifactId><version&g…

【Spring】 Bean 注入 HttpServletRequest 能保证线程安全的原理

文章目录 前言1. 图示2. 源码坐标后记 前言 今天看了一段老业务代码&#xff0c;HttpServletRequest 被注入后直接用于业务逻辑。 好奇Spring是如何解决线程安全问题。 Controller public class TestController {ResourceHttpServletRequest request;ResponseBodyGetMapping(…

0基础学前端-----CSS DAY11

0基础学前端-----CSS DAY11 视频参考&#xff1a;B站Pink老师 今天是CSS学习的第十一天&#xff0c;今天开始的笔记对应Pink老师课程中的CSS第六天的内容。 本节重点&#xff1a;CSS定位 本章目录 0基础学前端-----CSS DAY11本节目标1. 定位1.1 为什么需要定位1.2 定位组成1.…

frameworks 之 WMS添加窗口流程

frameworks 之 触摸事件窗口查找 1.获取WindowManager对象2.客户端添加view3. 服务端添加view (NO_SURFACE)4.重新布局 (DRAW_PENDING)4.1 创建 SurfaceControl 5.通知绘制 (COMMIT_DRAW_PENDING&#xff0c; READY_TO_SHOW&#xff0c; HAS_DRAWN)5. 1 布局测量和刷新 6.总结 …

ARM单片机定时器

定时器分类 定时器资源。基于GD32F103

【Java】IO流练习

IO流练习 题干&#xff1a; 根据指定要求&#xff0c;完成电话记录、 注册、登录 注册 题干&#xff1a; 完成【注册】功能&#xff1a; 要求&#xff1a; 用户输入用户名、密码存入users.txt文件中 若users.txt文件不存在&#xff0c;创建该文件若users.txt文件存在 输入…

Windows API Set:那些“只存在但不被使用“的DLL

API Set 是什么&#xff1f; 想象一下&#xff0c;Windows就像一个大型图书馆&#xff0c;而API Set就是这个图书馆的索引系统。但这个索引系统非常特别&#xff1a;它是直接内置在Windows加载器中的"虚拟目录"。 // 一个典型的API Set映射示例 api-ms-win-core-mem…

小程序配置文件 —— 12 全局配置 - pages配置

全局配置 - pages配置 在根目录下的 app.json 文件中有一个 pages 字段&#xff0c;这里我们介绍一下 pages 字段的具体用法&#xff1b; pages 字段&#xff1a;用来指定小程序由哪些页面组成&#xff0c;用来让小程序知道由哪些页面组成以及页面定义在哪个目录&#xff0c;…

正则表达式 - 使用总结

以下列出了一些常用正则表达式的使用总结&#xff1a; 匹配基本字符 使用普通字符匹配&#xff1a;普通字符&#xff08;如字母、数字、符号&#xff09;在正则表达式中表示自身&#xff0c;例如匹配 "runoob"&#xff1a;/runoob/。 使用元字符 . 匹配任意字符&…

OpenCV计算机视觉 03 椒盐噪声的添加与常见的平滑处理方式(均值、方框、高斯、中值)

上一篇文章&#xff1a;OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理 目录 添加椒盐噪声 图像平滑常见处理方式 均值滤波 (blur) 方框滤波 (boxFilter) ​高斯滤波 (GaussianBlur) 中值滤波 (medianBlur) 添加椒盐噪声 def add_peppersalt_noise(image, n…

告别 $arr[0]: PHP 和 Laravel 中更优雅的数组处理方式

你是否曾经历过这样的惊魂时刻&#xff1a;线上代码突然崩溃&#xff0c;只因访问了一个不存在的数组元素&#xff1f;或者更糟的是&#xff0c;应用开始疯狂抛出错误&#xff0c;而你却毫无头绪&#xff1f;这一切的罪魁祸首可能就是看似人畜无害的硬编码数组索引&#xff0c;…

uniapp 微信小程序 数据空白展示组件

效果图 html <template><view class"nodata"><view class""><image class"nodataimg":src"$publicfun.locaAndHttp()?localUrl:$publicfun.httpUrlImg(httUrl)"mode"aspectFit"></image>&l…

【开源免费】基于SpringBoot+Vue.JS网上摄影工作室系统(JAVA毕业设计)

本文项目编号 T 103 &#xff0c;文末自助获取源码 \color{red}{T103&#xff0c;文末自助获取源码} T103&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

SOEM裸机移植

源码地址 https://gitee.com/rathon/apollof429-v2.git 还有一些移植细节可以参考我之前写的一些博客 硬件平台&#xff1a; 正点原子APOLLOF429V2开发板 开发环境 stm32cubemx6.2.0版本&#xff0c;用的库为STM32Cube_FW_F4_V1.26.2&#xff0c;开发软件为STM32cubeide …

智慧地下采矿:可视化引领未来矿业管理

图扑智慧地下采矿可视化平台通过整合多源数据&#xff0c;提供实时 3D 矿井地图及分析&#xff0c;提升了矿产开采的安全性与效率&#xff0c;为矿业管理提供数据驱动的智能决策支持&#xff0c;推动行业数字化转型。