前端
1.前端代码篡改
题目复现
题目:[蜜雪冰城吉警店]
- 题目来源:Polarctf-web-[蜜雪冰城吉警店]
- 解题:
题目提示 "点到第9个隐藏款奶茶的单子,就会给你flag"
查看源码,发现id
对应奶茶款式
f12,firefox浏览器选择"查看器"板块(google浏览器选择"Elements"板块),找到任意一个id
篡改为9
此处将id=1
改为id=9
再次回到页面点击原来的第一款,得到flag
题目:[签到]
- 题目来源:Polarctf-web-[签到]
- 解题:
观察到"提交按钮"点不了,f12,切换到查看器模块
把按钮的"disabled"属性删除,然后点击"提交",提示提交ilovejljcxy
即可获得flag
找到输入框的名称为key
post传参key=ilovejljcxy
即可获得flag
2.查看源码
题目复现
题目:[召唤神龙]
- 题目来源:Polarctf-web-[召唤神龙]
- 解题:
f12(会出现失效的情况,可以手动开启开发者模式)
切换到"Sources"模块
查看到main.js
文件时看到可疑字符串
为Jsfuck代码混淆编码,解码得到flag
2. 请求
在网络通信中,常见的请求方式(HTTP方法)在数据包中的使用方式如下,主要分为 请求行、请求头、请求体 三部分:
(1) GET 请求
用途:获取资源,参数通过URL传递。
数据包示例:
httpGET /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)。
- 参数附加在URL后,格式为
(2) POST 请求
用途:提交数据(如表单、JSON)。
数据包示例:
httpPOST /api/users HTTP/1.1 Host: example.com Content-Type: application/json Content-Length: 36 {"username": "john", "password": "123"}
关键点:
- 参数或数据放在请求体中。
- 需指定
Content-Type
(如application/json
、application/x-www-form-urlencoded
)。
(3) PUT 请求
用途:更新资源(全量替换)。
数据包示例:
httpPUT /api/users/123 HTTP/1.1 Host: example.com Content-Type: application/json {"username": "john", "role": "admin"}
类似POST,但语义不同(幂等性)。
(4) DELETE 请求
用途:删除资源。
数据包示例:
httpDELETE /api/users/123 HTTP/1.1 Host: example.com
通常无请求体,资源ID通过URL路径传递。
(5) PATCH 请求
用途:部分更新资源。
数据包示例:
httpPATCH /api/users/123 HTTP/1.1 Host: example.com Content-Type: application/json {"role": "editor"}
与PUT的区别:仅发送需要修改的字段。
(6) HEAD 请求
用途:获取响应头(无响应体)。
数据包示例:
httpHEAD /api/users/123 HTTP/1.1 Host: example.com
常用于检查资源是否存在或缓存验证。
(7) OPTIONS 请求
用途:获取服务器支持的HTTP方法。
数据包示例:
httpOPTIONS /api/users HTTP/1.1 Host: example.com
响应头中包含
Allow: GET, POST, PUT
等。
(8)关键注意事项:
- URL 参数:GET、DELETE 通常通过URL传递参数。
- 请求体:POST、PUT、PATCH 需要
Content-Type
和Content-Length
头。 - 幂等性:GET、PUT、DELETE 是幂等的,POST 不是。
- 安全方法:GET、HEAD、OPTIONS 不改变服务器状态。
(9)示例工具(cURL):
# 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]
- 解题:
根据题意需要get传参id=1
,post传参jljcxy=flag
点击"Execute",获得flag
抓包同理
方法改为POST(原GET改为POST),URL中添加?id=1
(GET参数)
新增请求头:
Content-Type: application/x-www-form-urlencoded
(POST表单格式)Content-Length: 11
(jljcxy=flag
的字节长度)
添加请求体:jljcxy=flag
点击"发送",获得flag