当前位置:网站首页>从GET切换为POST提交数据的方法
从GET切换为POST提交数据的方法
2022-08-10 05:22:00 【红蓝的红】
一、前言
GET传参本身是用来从服务器取东西的,GET也能够向服务器传送较少的数据,但这些数据本身只是用来告诉服务器,用户需要什么样的数据。
因此GET传参来提交数据,会有长度的限制。此时如果服务器采用$_REQUEST来接收传参,这意味着可以将提交数据的方式转换一下,实现提交指定的数据。
二、GET切换为POST
要将GET传参转换为POST传参,并不是简单的将头部的GET改为POST,然后参数放到实体中,这样服务器是无法正确接收到你发送的数据的。需要注意二者的区别:GET传参缺少的部位:Content-Type、Content-Length、Origin、post传参内容,当然Origin不一定需要,但其他内容是必须的。下面以一个靶场为例,讲解两种修改传参的方式:
(一)用工具全自动修改
首先进入靶场,地址在:http://124.70.71.251:46005/
点击静夜思,然后抓取数据包:
鼠标单击右键,选择Change request method,效果如下:
然后发送数据包,查看网页的内容:
(二)手工修改
手工修改是本文的重点了,毕竟只会用工具改充其量就是个脚本小子,既要知其然也要知其所以然。
首先重新抓取刚才的数据包,然后按ctrl+R发送到repeter模块:
按顺序完成如下修改:
第一步:
首先要明确提交方式,因此将头部的GET改为POST
第二步:GET传参的数据包比POST方式的数据包,头部信息会少几个字段,需要补齐,我们一个个补。
首先将参数content的内容放到实体中,作为POST提交的内容(注意?要删掉):
然后在头部添加一行Content-Type:字段,后面的参数用于告诉服务器,我提交的POST数据是什么数据类型。关于其中的参数,有很多,例如:
常见的参数对应的媒体格式类型:
| 字段 | 数据类型 |
|---|---|
| text/html | HTML格式 |
| text/plain | 纯文本格式 |
| text/xml | XML格式 |
| image/gif | gif图片格式 |
| image/jpeg | jpg图片格式 |
| image/png | png图片格式 |
当然还有application开头的类型:
| 字段 | 数据类型 |
|---|---|
| application/xhtml+xml | XHTML格式 |
| application/xml | XML数据格式 |
| application/atom+xml | Atom XML聚合格式 |
| application/json | JSON数据格式 |
| application/pdf | pdf格式 |
| application/msword | Word文档格式 |
| application/octet-stream | 二进制流数据(eg:文件下载) |
| application/x-www-form-urlencoded | 默认提交的方式 |
通过对比分析上面的参数,我们可以先尝试按默认的方式来提交,也就是ContentType的参数应为application/x-www-form-urlencoded。
接着还需要告诉服务器,实体部分内容的总长度是多少(即有多少个字符)。
在此之前,先将原始的数据进行一次URL解码,然后替换掉原始的数据:
现在需要将实体部分的内容全选,然后发送到Comparer模块即可知道字符的数量(包括content这个参数):
可以看到,长度为9966,因此添加字段Content-Length: 9966。注意,:后面应有一个空格,前面的Content-Type字段后面的:也是。
因此完整的数据包如下:
发送数据包:
提交KEY:
三、小结
本文通过一道靶场的练习分享了GET传参方式切换为POST传参的方法,其中手工操作较为繁琐,但读者也应该掌握这个方法,以夯实自己的基本功,切勿做一个只能依赖工具的脚本小子。
边栏推荐
- FPGA工程师面试试题集锦41~50
- 如何取得某月的最后一天
- 如何用Apifox 的智能Mock功能?
- 线程(下):读写者模型\环形队列\线程池
- Order table delete, insert and search operations
- 添加路由的2种方式--router
- 看了几十篇轻量化目标检测论文扫盲做的摘抄笔记
- 大佬们,运行cdc后oracle归档日志20分钟增长3G是正常现象吗
- 实战小技巧19:List转Map List的几种姿势
- Flutter development: error The following assertion was thrown resolving an image codec: Solution for Unable to...
猜你喜欢

ThreadPoolExecutor thread pool principle

一文带你搞懂OAuth2.0

众昂矿业:萤石下游需求强劲

Arduino框架下合宙ESP32C3 +1.8“tft 网络时钟

最强大脑(1)

EasyGBS连接mysql数据库提示“can’t connect to mysql server”,该如何解决?

Stacks and Queues | Valid parentheses, delete all adjacent elements in a string, reverse Polish expression evaluation, maximum sliding window, top K high frequency elements | leecode brush questions

oracle rac 11g安装执行root.sh时报错

小影科技IPO被终止:年营收3.85亿 五岳与达晨是股东

基于BP神经网络的多因素房屋价格预测matlab仿真
随机推荐
FPGA工程师面试试题集锦31~40
pytorch learning
细数国产接口协作平台的六把武器!
Thread.sleep, Thread.yield 作用解释
【Static proxy】
最强大脑(1)
Nexus_仓库类型
2022 T Elevator Repair Exam Questions and Mock Exams
Shell编程三剑客之awk
SQLSERVER 2008 parses data in Json format
剑指Offer 033.变位数组
Mysql CDC (2.1.1) inital snapshot database set up five concurrent degree, se
strongest brain (1)
Flutter开发:报错The following assertion was thrown resolving an image codec:Unable to…的解决方法
Nexus_Warehouse Type
[Thesis Notes] Prototypical Contrast Adaptation for Domain Adaptive Semantic Segmentation
暑期学前作业
`id` bigint(20) unsigned NOT NULL COMMENT 'Database primary key',
How to simulate the background API call scene, very detailed!
通过一个案例轻松入门OAuth协议