html-form元素

1、text/plain形式

2、application/x-www-form-urlencoded

3、不同的input类型

  • 包括多选按钮在内的各种input,以及textarea,提交时都是基于name和value这样的参数单元,value是字符串。多选按钮被选中多个,相当于多组的name和value。从服务端接收来看,参数只有两种:name唯一和name不唯一,不区分前端组件类型
  • 对于任意的输入来说,必须设置name属性,表单提交才会包含该参数。如果submit和button设置了name属性,也会作为一组输入
  • value未设置时,提交时会采用其默认值。单选按钮和多选按钮的默认值是on。submit的默认值是"提交查询"
  • 如果是单选框或者多选框类型,即使设置了name属性,但只有选中,表单才会提交该组参数

4、multipart/form-data

(1)文件上传

  • method必须是post
  • enctype必须是multipart/form-data
  • input的type为file,点击后选择文件
  • 对同一form下的各组name和value都不会进行编码处理

(2)请求报文格式

POST /dvwa/vulnerabilities/upload/ HTTP/1.1
Host: 192.168.0.18
Cookie: PHPSESSID=dg5uk8opkv5ve1a74vv86spqh6; security=low
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer: https://192.168.0.18/dvwa/vulnerabilities/upload/
Content-Type: multipart/form-data; boundary=---------------------------4384282613834
Content-Length: 422
Upgrade-Insecure-Requests: 1
Connection: close

-----------------------------4384282613834
Content-Disposition: form-data; name="MAX_FILE_SIZE"

100000
-----------------------------4384282613834
Content-Disposition: form-data; name="uploaded"; filename="新建文本文档.txt"
Content-Type: text/plain

abc时间
-----------------------------4384282613834
Content-Disposition: form-data; name="Upload"

Upload
-----------------------------4384282613834--
  •  文件上传时,请求中content-type字段会追加boundary属性,以27个-作为前缀,然后是一个13个数字组成的随机字符串。
  • boundary属性在请求体部中,作为分隔符使用。n组参数,对应n+1组boundary属性值。末尾额外追加--\r\n字符串
  • 相邻boundary之间作为一个参数单元
    • 各部分之间也是使用\r\n分隔
    • 第一行是基本信息,以Content-Disposition: form-data;作为前缀,然后是name属性,以及可能的filename属性
    • 第二行是空行
    • 第三行开始是value属性,或者文件上传所对应的文件内容,简单理解为二进制数据。如果是文本文件,那么直接就是文本字符串;如果是图片等二进制文件,burp中显示时会乱码
  • boundary属性中的随机字符是相对随机生成的,相邻上传同一文件也会使用不同的随机字符串值。当然,也可以前后使用相同的字符串值,或者自定义长度的字符串值。需要注意的是,boundary属性是作为分隔符使用,所以定义时不能与参数单元的值发生冲突

(3)file组件

如果file组件没有选择上传的文件,那么form提交时,仍然会保留该参数进行提交,此时filename和内容都为空字符串

posted @ 2023-10-25 01:52  挖洞404  阅读(10)  评论(0编辑  收藏  举报