Skip to content

前端

1.前端代码篡改

题目复现

题目:[蜜雪冰城吉警店]

  • 题目来源:Polarctf-web-[蜜雪冰城吉警店]

image-20250329223625319

  • 解题:

题目提示 "点到第9个隐藏款奶茶的单子,就会给你flag"

查看源码,发现id对应奶茶款式

屏幕截图2025-03-29223929

f12,firefox浏览器选择"查看器"板块(google浏览器选择"Elements"板块),找到任意一个id篡改为9

屏幕截图2025-03-29224105

此处将id=1改为id=9

image-20250329224309315

再次回到页面点击原来的第一款,得到flag

image-20250329224422717

题目:[签到]

  • 题目来源:Polarctf-web-[签到]

image-20250405214740504

  • 解题:

观察到"提交按钮"点不了,f12,切换到查看器模块

image-20250405214900930

把按钮的"disabled"属性删除,然后点击"提交",提示提交ilovejljcxy即可获得flag

image-20250405215007849

找到输入框的名称为key

image-20250405215214489

post传参key=ilovejljcxy即可获得flag

image-20250405215352670

2.查看源码

题目复现

题目:[召唤神龙]

  • 题目来源:Polarctf-web-[召唤神龙]

image-20250404192634741

  • 解题:

f12(会出现失效的情况,可以手动开启开发者模式)

image-20250404192930371

切换到"Sources"模块

image-20250404192755226

查看到main.js文件时看到可疑字符串

屏幕截图2025-04-04193129

为Jsfuck代码混淆编码,解码得到flag

image-20250404193324455

2. 请求

在网络通信中,常见的请求方式(HTTP方法)在数据包中的使用方式如下,主要分为 请求行、请求头、请求体 三部分:

(1) GET 请求

  • 用途:获取资源,参数通过URL传递。

  • 数据包示例

    http
    GET /api/users?id=123&name=John HTTP/1.1
    Host: example.com
    User-Agent: Mozilla/5.0
    Accept: application/json
  • 关键点

    • 参数附加在URL后,格式为 ?key1=value1&key2=value2
    • 无请求体(Body)。

(2) POST 请求

  • 用途:提交数据(如表单、JSON)。

  • 数据包示例

    http
    POST /api/users HTTP/1.1
    Host: example.com
    Content-Type: application/json
    Content-Length: 36
    
    {"username": "john", "password": "123"}
  • 关键点

    • 参数或数据放在请求体中。
    • 需指定 Content-Type(如 application/jsonapplication/x-www-form-urlencoded)。

(3) PUT 请求

  • 用途:更新资源(全量替换)。

  • 数据包示例

    http
    PUT /api/users/123 HTTP/1.1
    Host: example.com
    Content-Type: application/json
    
    {"username": "john", "role": "admin"}
  • 类似POST,但语义不同(幂等性)。

(4) DELETE 请求

  • 用途:删除资源。

  • 数据包示例

    http
    DELETE /api/users/123 HTTP/1.1
    Host: example.com
  • 通常无请求体,资源ID通过URL路径传递。

(5) PATCH 请求

  • 用途:部分更新资源。

  • 数据包示例

    http
    PATCH /api/users/123 HTTP/1.1
    Host: example.com
    Content-Type: application/json
    
    {"role": "editor"}
  • 与PUT的区别:仅发送需要修改的字段。

(6) HEAD 请求

  • 用途:获取响应头(无响应体)。

  • 数据包示例

    http
    HEAD /api/users/123 HTTP/1.1
    Host: example.com
  • 常用于检查资源是否存在或缓存验证。

(7) OPTIONS 请求

  • 用途:获取服务器支持的HTTP方法。

  • 数据包示例

    http
    OPTIONS /api/users HTTP/1.1
    Host: example.com
  • 响应头中包含 Allow: GET, POST, PUT 等。

(8)关键注意事项:

  1. URL 参数:GET、DELETE 通常通过URL传递参数。
  2. 请求体:POST、PUT、PATCH 需要 Content-TypeContent-Length 头。
  3. 幂等性:GET、PUT、DELETE 是幂等的,POST 不是。
  4. 安全方法:GET、HEAD、OPTIONS 不改变服务器状态。

(9)示例工具(cURL):

bash
# GET
curl -X GET "http://example.com/api/users?id=123"

# POST (JSON)
curl -X POST -H "Content-Type: application/json" -d '{"name":"John"}' http://example.com/api/users

# PUT
curl -X PUT -H "Content-Type: application/json" -d '{"role":"admin"}' http://example.com/api/users/123

(10)题目复现

题目:[GET-POST]

  • 题目来源:Polarctf-web-[GET-POST]

image-20250405144313054

  • 解题:

根据题意需要get传参id=1,post传参jljcxy=flag

image-20250405144430539

点击"Execute",获得flag

image-20250405144501660

抓包同理

image-20250405145051123

方法改为POST(原GET改为POST),URL中添加?id=1(GET参数)

新增请求头

  • Content-Type: application/x-www-form-urlencoded(POST表单格式)
  • Content-Length: 11jljcxy=flag的字节长度)

添加请求体jljcxy=flag

点击"发送",获得flag

image-20250405145505603

滇ICP备2025057983号-1