当前位置: 首页 > article >正文

PortSwigger靶场练习---第二关-查找和利用未使用的 API 端点

第二关:Finding and exploiting an unused API endpoint

实验:查找和利用未使用的 API 端点

PortSwigger靶场地址: Dashboard | Web Security Academy - PortSwigger

 题目:

官方提示:

  1. 在 Burp 的浏览器中,访问实验室并单击一个产品。

  2. 在 Proxy > HTTP history(代理 HTTP 历史记录)中,请注意产品的 API 请求。例如。/api/products/3/price

  3. 右键单击 API 请求,然后选择 Send to Repeater (发送到 Repeater)。

  4. 在 Repeater 选项卡中,将 API 请求的 HTTP 方法从 更改为 ,然后发送请求。请注意,响应指定允许 和 方法。GETOPTIONSGETPATCH

  5. 将 API 请求的方法从 更改为 ,然后发送请求。请注意,您会收到一条消息。这可能表示您需要进行身份验证才能更新订单。GETPATCHUnauthorized

  6. 在 Burp 的浏览器中,使用凭据 登录到应用程序。wiener:peter

  7. 点击 Lightweight “l33t” 皮夹克 产品。

  8. 在 Proxy > HTTP history (代理 HTTP 历史记录) 中,右键单击皮夹克的请求,然后选择 Send to Repeater (发送到中继器)。API/products/1/price

  9. 在 Repeater 选项卡中,将 API 请求的方法从 更改为 ,然后发送请求。请注意,这会导致错误,因为不正确。错误消息指定 应为 .GETPATCHContent-TypeContent-Typeapplication/json

  10. 添加标头并将值设置为 .Content-Typeapplication/json

  11. 添加一个空的 JSON 对象作为请求正文,然后发送请求。请注意,这会导致错误,因为请求正文缺少参数。{}price

  12. 将值为 的参数添加到 JSON 对象 。发送请求。price0{"price":0}

  13. 在 Burp 的浏览器中,重新加载 leather jacket 商品页面。请注意,皮夹克的价格现在是 。$0.00

  14. 将皮夹克添加到您的购物篮中。

  15. 转到您的购物篮,然后单击 Place order(下订单)以解决实验问题。

第一步:

进入测试界面

第二步:

根据官方提示1 ,先随意的选择一个商品,并建立订单

第三步:

到Burp中,在代理下的HTTP历史记录中可以找到一条有关“ api ”的信息,由于我选择的是列表第三个商品,所以该路径名称为“ /api/products/3/price

第四步:

选中后右键,发送到Repeater(中继器)

第五步:

在中继器中发送一次请求,得到了商品价格和讯息:你的邻居刚刚买了一个!(这些不是重点)

第六步:

将“GET”改为“PATCH”再发送请求,在响应框里可以看到显示“Unauthorized”(未经授权)。

第七步:

返回浏览器,使用“ wiener:peter ”(账号:密码)进行登录。
并返回主页,按照官方提示点击“ Lightweight "l33t" Leather Jacket ”进行下单操作。
随后在burp代理的HTTP历史记录中找到关于皮夹克的PAI,并发送到中继器使用“PATCH”发送请求。

第八步:

响应区显示“仅支持“application/json”Content-Type”,所以我们要更改内容类型。
先修改标头,既:在请求区添加“Content-Type: application/json”,在发送请求后返回了一个错误,它没有找到js对象。

第九步:

添加一个空的json对象,在请求区的最下方输入“ {} ”再点击发送即可。(注意:括号要与上文代码隔开一行
请求后又出现了新的报错,参考官方“提示12”,我们需要在json对象内添加参数“  "price":0  ”

第十步:

再次发送请求,可以看到返回了一个价格为0的提示,这时我们回到浏览器并返回home主页进行刷新。
可以看到皮夹克的价格已经变为了 0刀乐 ,点进去添加顶点,并在界面右上角区域找到“ 购物篮 ”在购物篮界面点击“ Place order ”,即可通关。


http://www.kler.cn/a/509290.html

相关文章:

  • 在IDEA中使用通义灵码插件:全面提升开发效率的智能助手
  • ubuntu常见指令详解
  • 在线图片像素颜色拾取工具
  • references配置项详解
  • Vue2+OpenLayers实现添加多边形覆盖物(提供Gitee源码)
  • 医药新零售的下半场,叮当健康找到增长搭子
  • Three.js+Vue3+Vite应用lil-GUI调试开发3D效果(三)
  • 【AI论文】迈向大型语言模型(LLM)训练开放数据集的最佳实践
  • 20250118面试鸭特训营第26天
  • 初学stm32 --- RS485
  • 大模型有监督微调之prompting(二)
  • 【MySQL】表空间丢失处理(Tablespace is missing for table 错误处理)
  • MySQL 到 MySQL 实时数据同步实操分享
  • 使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程
  • CKA认证 | Day9 K8s集群维护
  • 【Python项目实战】爬取中国天气网天气数据
  • Arm 驱动i2c相关
  • 自己搭建远程桌面服务器-RustDesk(小白版)
  • Vue项目搭建教程超详细
  • PyTest自学 - 将多个用例组织在一个类中