`
yajie
  • 浏览: 211921 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

 winhttprequest,使用WinHttpRequest伪造referer,winhttprequest示例代码,winhttprequest入门教程,winhttprequest高级使用教程

 从msdn得知,WinHttp.WinHttpRequest.5.1 是 msxml 4.0 的底层对象,也就是说 XMLHTTP/ServerXMLHTTP 也是在它的基础上封装而来。用 WinHttpRequest 发的请求,连 Fiddler 也监测不到,看来确实是比较底层的东西。

既然可以用它来伪造所有 http 请求的 header,那 Cookies、Sessionid 自然也就可以得到并传递了。下面是实战代码,用命令行登录博客园,共三次请求,第一次请求获取表单的 VIEWSTATE 和 EVENTVALIDATION,第二次带账户登录,第三次带Cookie访问其首页:

//封装成远程访问的函数  
function RemoteCall(method, url, param, header){  
    var obj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");  
    obj.Open(method||"GET", url, false);  
    obj.Option(4) = 13056;  
    obj.Option(6) = false;  
    if(method=="POST"){  
        obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
    }  
    if(header){  
        for(var key in header){  
            if(key=="Cookie"){//根据 MSDN 的建议,设置Cookie前,先设置一个无用的值  
                obj.setRequestHeader("Cookie", "string");  
            }  
            obj.setRequestHeader(key, header[key]);  
        }  
    }  
    obj.Send(param);  
    return obj;  
}  
//第一次远程访问博客园的登录入口  
var url = "http://passport.cnblogs.com/login.aspx";  
var objFirst = RemoteCall("GET", url, null);  
 
//取得 viewstate 与 eventvalidation  
var viewstate = objFirst.responseText.match(/id="__VIEWSTATE" value="(.*?)" \/>/)[1];  
var eventvalidation = objFirst.responseText.match(/id="__EVENTVALIDATION" value="(.*?)" \/>/)[1];  
 
//输入自己的账户与密码  
var username = "";  
var password = "";  
var param = "" 
+ "__VIEWSTATE="+encodeURIComponent(viewstate)   
+ "&__EVENTVALIDATION="+encodeURIComponent(eventvalidation)   
+ "&tbUserName="+username  
+ "&tbPassword="+password  
+ "&btnLogin="+encodeURIComponent("登  录");  
 
var objSecond = RemoteCall("POST", url, param);  
 
//登录成功后服务器执行 Response.Redirect 跳转,即向客户端发送了 302 状态代码  
WScript.Echo(objSecond.status); //302即登录成功, 如果是200,则登录失败,页面没有跳转  
 
//带上登录成功后的cookie,再次访问其首页  
var json = {"Cookie": objSecond.getResponseHeader("Set-Cookie")};  
var objThird = RemoteCall("GET", "http://www.cnblogs.com", null, json);  
WScript.Echo(objThird.responseText);

WinHttpRequest伪造访问来路目的就是为了欺骗服务器。原本以为给 XMLHTTP 对象增加一个 Referer 的header 就可以,结果却没有任何作用,改用 ServerXMLHTTP 也如此。

下面的代码通过伪造 referer 的值,假装从百度首页提交一个表单到指定的 url 去:

var url = "http://www.qiangso.com";  
 
var param = "name=david&age=30";
  
var obj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
  
obj.Open("POST", url, false);
  
obj.Option(4) = 13056;  
 
obj.Option(6) = false//false可以不自动跳转,截取服务端返回的302状态。
  obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
obj.setRequestHeader(
"Referer"http://www.qiangso.com);
  
obj.Send(param);  
 
WScript.Echo(obj.responseText); 

保存为 xxx.js 文件,在命令行中运行 cscript.exe xxx.js。

上面的代码其实已经有一定恶意,我只为证明使用 WinHttpRequest 确实可以模拟浏览器发送请求,服务端也无法区别是从浏览器来的,还是从命令行来的。这证明到一点,从客户端提交来的任何数据都不可信,因为发送的 http 数据包不但表单值可以修改,连数据包的header都可以随意修改。同时也说明,使用 VIEWSTATE 对表单的安全性无任何用处。

0
1
分享到:
评论

相关推荐

    S变换+Sockwell R G , Mansinha L , Lowe R P . Localization of the complex spectrum: the S transformJ

    s变换用的高斯窗函数( 高斯窗是指数窗的一种,它也无负的旁瓣,而且没有旁瓣波动,因而不回引起计算谱中假的极大值或极小值,而且高斯窗频率窗函数的主瓣比指数窗的主瓣窄,分辨率比指数窗有所提高。

    2021科大讯飞车辆贷违预测大赛冠军源码+全部资料.zip

    2021科大讯飞车辆贷违预测大赛冠军源码+全部资料.zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!

    AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip

    AI图像处理工具包-一键抠图、背景切换、旧照片修复、人像漫画化、视频卡通化(Python+OpenCV+Dlib+TensorFlow).zip [资源说明] 1、该项目是团队成员近期最新开发,代码完整,资料齐全,含设计文档等 2、上传的项目源码经过严格测试,功能完善且能正常运行,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的高校学生、教师、科研工作者、行业从业者下载使用,可借鉴学习,也可直接作为毕业设计、课程设计、作业、项目初期立项演示等,也适合小白学习进阶,遇到问题不懂就问,欢迎交流。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 5、不懂配置和运行,可远程教学 欢迎下载,学习使用!

    基于java+springboot+vue+mysql的远程教育网站设计与实现.docx

    基于java+springboot+vue+mysql的远程教育网站设计与实现.docx

    springboot005学生心理咨询评估系统(源码+数据库+论文+PPT+包调试+一对一指导)

    毕业设计资料,计算机毕业设计,源码,毕业论文,毕业答辩,答辩PPT,Java毕业设计,php毕业设计,ASP.NET毕业设计,毕业指导,计算机作业,php作业,java作业,ASP.NET作业,编程作业,管理系统,网站,app,毕业设计学习,Java学习,php学习,ASP.NET学习,java课程,php课程,ASP.NET课程,答辩技巧,SQLSERVER数据库,Mysql数据库,jdbc,SSM框架,SpringBoot框架,Html5,小程序

    蓝牙串口助手,可以连接HC-05等蓝牙模块,实现单片机设备与手机通讯,安卓手机,蓝牙调试助手,具有按键功能!

    蓝牙串口助手,可以连接HC-05等蓝牙模块,实现单片机设备与手机通讯,安卓手机,蓝牙调试助手,具有按键功能!

    TriLib-2-Model-Loading-Package-2.3.7.unitypackage

    TriLib 2 是一个跨平台的运行时 3D 模型导入器

    “人力资源+大数据+薪酬报告+涨薪调薪”

    人力资源+大数据+薪酬报告+涨薪调薪,在学习、工作生活中,越来越多的事务都会使用到报告,通常情况下,报告的内容含量大、篇幅较长。那么什么样的薪酬报告才是有效的呢?以下是小编精心整理的调薪申请报告,欢迎大家分享。相信老板看到这样的报告,一定会考虑涨薪的哦。

Global site tag (gtag.js) - Google Analytics