Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 417|回复: 0

[jsp学习]网页表单密码破解程序

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 10:08:52 | 显示全部楼层 |阅读模式
    利用字典探嗅网页表单密码的源程序。程序只能用来学习研究。
      
      
      
       
         
          Form Password Sniffer
          
    使用说明 1、Target:填写表单将要的路径,该路径可以通过查看网页的源文件得到,如
    <FORM NAME="form1" METHOD="post " ACTION="http://www.163.com/CheckUser.jsp> 2、Referer:有些网页的验证表单处要检测表单由何处提交,这里可以填写该表单的URL,如
    www.163.com  3、CorrectFlag:此处填写表单验证后正确的关键字,如何得知该关键字呢?如果你有一个帐号能够通过该表单验证,可以使用GetFlag按钮来获得该关键字。 4、WrongFlag:同上,这里是获得验证失败的关键字,也是通过GetFlag得到的。 5、Keep Session:是保持页面在传递中的Session(目前没有实现) 6、Var1Name:指表单中第一个文本框的名字,一般是用户名:),也可以通过查看源程序得到,如
    <input name="username"size=12 class=log>
    其中的usrname就是名字 Var1Value:指该处应该填写的内容,如果要猜jack的密码,就填写jack UseDict:指是否使用字典文件,如果该标记被选中,会让你选择字典文件。 Var2Name、Var2Value、UseDict同上。 注意:如果想检测某个用户名是否已存在(一般网站都会提供该功能),可以将Var1使用字典,Var2留白。如果只是猜某一指定用户的密码,则将Var2使用字典。目前不支持用户名和密码同时使用字典文件。 7、Delay如果某些ISP限制了访问页面的时间间隔,请设定该间隔时间,单位为毫秒。 8、OtherParameters:如果表单中还有其它需要提交的元素,可以自己拼写提交,如
    submit="登录"&style="1" 9、此处是反馈的结果 Load/Save:打开/保存配置文件 下面是示例: 我在自己的机器上准备了4个文件:default.HTML(登录页面),check.jsp(身份验证),error.jsp(用户名或密码错误页面),ok.jsp(登录成功的页面)
          
            
             default.htm的内容 <form name="form1" method="post" action="check.jsp">
    用户名:<input name="username" type="text" size="12"><br>
    密 码:<input name="password" type="password" value="" size="12">
    <input name="submit" type="submit" value="提交">
    </form>
             
    check.jsp <%
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    if (!username.equals("zhang")) {
    response.sendRedirect("error.jsp?msg=用户不存在");
    return ;
    }

    if (!password.equals("test")) {
    response.sendRedirect("error.jsp?msg=密码不正确");
    return ;
    }

    response.sendRedirect("ok.jsp");
    %>
             
    error.jsp <%
    out.println(request.getParameter("msg"));
    %>
             
    ok.jsp <%
    out.println("Login Success");
    %>
            
           由default.htm中可以看出,Target应该是check.jsp,Var1Name是username,Var2Name是password,因此,Target处应该填写http://localhost:8080/server/check.jsp,Var1Name处填写username,Var2Name处填写password,上面的程序中我已经知道了用户zhang使用密码test时能够正确登录,因此我将Var1Value填写zhang,Var2Value填写test,然后GetFlag,返回的结果如下:
          
            
            HTTP/1.1 302 Moved Temporarily
    Set-Cookie: JSESSIONID=D774019940B30BC65709C15197A13B0A; Path=/server
    Location: http://127.0.0.1:8080/server/ok.jsp
    Content-Type: text/html
    Content-Length: 0
    Date: Sat, 10 Apr 2004 14:57:27 GMT
    Server: Apache-Coyote/1.1
    Connection: close
            
           在我们再将Var1Value和Var2Value留空,再看看登录失败时的返回数据
          
            
            HTTP/1.1 302 Moved Temporarily
    Set-Cookie: JSESSIONID=21E3ECB8815AC7876A78D1479B30EB7D; Path=/server
    Location: http://127.0.0.1:8080/server/error.jsp?msg=&oacute;??&sect;2?′??&uacute;
    Content-Type: text/html
    Content-Length: 0
    Date: Sat, 10 Apr 2004 15:00:22 GMT
    Server: Apache-Coyote/1.1
    Connection: close

            
           从上面返回的两组数据中可以看到,当登录成功时,返回的数据包含Location: http://127.0.0.1:8080/server/ok.jsp,失败则包含Location: http://127.0.0.1:8080/server/error.jsp?msg=&oacute;??&sect;2?′??&uacute;(这里没有处理中文编码,所以显示乱码),因此,我们在CorrectFlag中填写http://127.0.0.1:8080/server/ok.jsp,WrongFlag中填写Location: http://127.0.0.1:8080/server/error.jsp?msg=&oacute;??&sect;2?′??&uacute;,现在再假设我要猜测用户zhang的密码,这时可以将Var1Value中填写zhang,Var2Value使用字典文件。我准备的字典文件内容如下:
          
            
            iloveyou
    loveyou
    love
    ILOVEYOU
    LOVEYOU
    LOVE
    loveme
    LOVEME
    test
    778852177885217788521
    77885217788521
    7788521
    521521521
    521521
    521
    520520520
    520520
    520
    zhang
    772587725877258
    7725877258
    77258
    258258258
    258258
    258
    sina
    sohu
    163
    263
    (最后一行要留空)

            
           此时界面应该如下: 然后Start,结果如下 注意: 1、选择关键字最好是尽量靠前,这样会使网络传输的数据量比较小 2、能务必填写CorrectFlag,也就是说你必须知道登录正确的关键字(这也是提高速度的一个方面,同时,如果仅通过错误的关键字来猜测密码是否正确比较困难,这是由于关键字比较难找,最重要的是,如果不填写CorrectFlag,目前不能正常工作:))
         
       
       
      


      
      
       
       

         
       

       
       
      

      

      



                            function TempSave(ElementID)
                            {
                                    CommentsPersistDiv.setAttribute("CommentContent",document.getElementById(ElementID).value);
                                    CommentsPersistDiv.save("CommentXMLStore");
                            }
                            function Restore(ElementID)
                            {
                                    CommentsPersistDiv.load("CommentXMLStore");
                                    document.getElementById(ElementID).value=CommentsPersistDiv.getAttribute("CommentContent");
                            }
                   
                      











    源码下载:http://file.javaxxz.com/2014/10/1/100851922.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-3 21:14 , Processed in 0.383510 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表