如何修改移动终端的wifi(在忘记后台username和password的情况下)

    这几天回家,家里的wifi被小朋友们共享了,本来也没什么,毕竟我晚上10点后才对网有很大的需求,现在就比较恐怖了,10点钟之后小朋友对wifi的需求不减反增了。于是我恼怒的要改wifi密码了!

    首先这里的路由器是装的移动宽带,所以我们在这里登陆:

    192.168.1.1(也有的是192.168.0.1)

    

到这里之后,突然懵逼了:

我发现应该在路由器上注明的账号密码不见了。

- -这时候就要发挥一个了解过网安的程序员应该有的素质了!

首先,分析这个网页,打开网页源代码:

<html>
	<head>
	<title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<script language="javascript" type="text/javascript" src="../js/jquery-1.4.2.js"></script>
	<script language="javascript" type="text/javascript" src="../js/jquery.json-2.2.js"></script>
	<script language="javascript" type="text/javascript" src="../js/jquery.utils.homestation.min.js"></script>
	<script language="JavaScript">
	var Status = '0';
	var REGTYPE = '0';
	document.onkeydown=function mykeyDown(e){   
	e = e||event;		
	if(e.keyCode == 13) 
	{
		document.getElementById('login_btn').click();
	}    
	return;
	}
function postRegisterResult()
{
	$.ajax(
    {
		url: 'registerResult_jiangsu.cgi?name=bb',
		dataType: 'json',
		cache: false,
		async: false,
		success: function(returnData, status)
        {
            if(returnData.RETURN.success)
            {
                callback(returnData.RETURN.success,returnData);
            }
            else
            {
                callback(returnData.RETURN.success,returnData);
            }
        }
    }
    );
}
	function onlogin(a) 
	{
		$.ajax({                                                                        
			url:'/area.conf',
			dataType:'json', 			
			cache:false,                                                                   
			async:false,                                                                   
			success: function(data, status){                                              
			AREACODE = data.AREA;                                                        
			RESULT = data.RESULT;				
			}
			});	
		if (a == 1)
		{	
			var loc = 'login_CM.htm.cgi?';
			var pass = password.value;
		    pass = pass.replace(/&/g, "123fiberhome321");
		    pass = pass.replace(/!/g, "321telecomadmin123");
		    pass = pass.replace(/#/g, "321useradmin123");
			loc += 'username=' + user_name.value;
			loc += '&password=' + pass;
			if(user_name.value == null || user_name.value.length <= 0)
			{
				alert("用户名不能为空,请重新输入!");
				return false;
			}			
			if(password.value == null || password.value.length <= 0) 
			{
				alert("密码不能为空,请重新输入!");
				return false;
			}			
			var code = 'location="' + loc + '"';
			eval(code);
		}
		else if (a == 2)
		{
			password.value = "";
			document.getElementById("login_error_hint").style.display = "none";	
		}
		else if (a ==3)
		{
			postRegisterResult();
			$.ajax({                                                                        
				url:'../JS.conf',
				dataType:'json', 			
				cache:false,                                                                   
				async:false,                                                                   
				success: function(data, status){                                              
				isOverMaxRegTime = data.isOverMaxRegTime;                                                        			
				}
				});	
			var regtype = '';	
			var Loid = '';				
			if (AREACODE == "Jiangsu" && isOverMaxRegTime == 1)
			{
				alert("已连续注册失败3次,请3分钟后再尝试注册")
			}
			else if (AREACODE == "Jiangsu" && RESULT == 1)
			{
				alert("已经注册成功,业务下发成功,无需再次注册")
			}	
			else if (AREACODE == "Fujian" && RESULT == 1)
			{
				alert("设备已注册成功.无需再注册")
			}
			else if (AREACODE == "Anhui" && RESULT == 1)
			{
				if (regtype != "2")
				{
					alert("该设备已注册成功(LOID:),如需重新注册请恢复出厂设置")
				}
				else
				{
					alert("该设备已注册成功,如需重新注册请恢复出厂设置")
				}	
			}
			else
			{
				window.location="../register.html";
			}
			document.getElementById("login_error_hint").style.display = "none";
		}	
		else if (a ==4)
		{
			window.location="routehainan.htm.cgi";
		}		
	}
		
	function formLoad()
	{
		var stata = '';
		var log = '0';
		if ( log == "1" )
		{
			setTimeout(function() {
			   var loc = '../index.html';
			   var code = 'window.parent.location="' + loc + '"';
			   eval(code);
			}, 60000 );
		}		
		var LOGSIGN = '0';
		var MENU_PREFIX = '';
		var Factory_mode = '0';
		var ROUTESTATUS = '1';

		if ( LOGSIGN == "3" )
		{
			alert("您的连续错误登陆次数已经超出3次,请1分钟以后再试!");
		}		
		else
		{
		if ( MENU_PREFIX == "admin" )
		{
			alert("维护帐号已被禁用,请另选帐号登录!");
			document.getElementById("login_error_hint").style.display = "none";
		}
		else if ( MENU_PREFIX == "useradmin" )
		{
			alert("当前已有用户在别处登录,请稍后登录!");
			document.getElementById("login_error_hint").style.display = "none";
		}
		else if ( MENU_PREFIX == "factory" )
		{			
			document.getElementById("login_error_hint").style.display = "";
		}
		else if ( MENU_PREFIX == "error" ) 
		{
			alert("您的连续错误登陆次数已经超出3次,请1分钟以后再试!");
			document.getElementById("login_error_hint").style.display = "";
		}
		else
		{
			document.getElementById("login_error_hint").style.display = "none";
		}
		}
		$.ajax({                                                                        
			url:'/area.conf',
			dataType:'json', 			
			cache:false,                                                                   
			async:false,                                                                   
			success: function(data, status){                                              
			AREACODE = data.AREA;                                                        
			RESULT = data.RESULT;			
			}
			});
		

		if (AREACODE == "Jiangsu" || AREACODE == "Anhui" || AREACODE == "Fujian")
		{
			document.getElementById("register_btn").style.display = "";	
		}
		else
		{
			document.getElementById("register_btn").style.display = "";	
			if ( RESULT == '1' )
			{
				document.all("register_btn").disabled= 1;
			}
			else
			{
				document.all("register_btn").disabled= 0;
			}		
		}	
	}

	</script>
	<meta HTTP-EQUIV='Pragma' CONTENT='no-cache'>
	<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
	<link type=text/css rel=stylesheet href=../css/jquery.ui.core.css>
	<link type=text/css rel=stylesheet href=../css/style.css>
	<link type=text/css rel=stylesheet href=../branches/e8/customize.css>
	<link type=text/css rel=stylesheet href=../css/defaultBranding.css>
	</head>
	<body onLoad="formLoad()">
		<div class="wraplogin_CM">
			  <div id="login_header_CM"></div>
			  <div id="login_content">
					<div class="w_text">
						<div style="height:70px; width:400px; position:relative; left:190px;">		
							<div style="height:22px; width:inherit;">
								<span style="float:left;color:black;font-size: 12px; font-family: SimSun;" align=left>用户:  </span>
								<span style="float:left;"><input name=user_name id=user_name class=board type=text size=20 /></span>
							</div>
							<div style="clear:both;"></div>						
							<div style="height:22px; width:inherit;">
								<span style="float:left;color:black;font-size: 12px; font-family: SimSun;" align=left>密码:  </span>
								<span style="float:left;"><input name=password id=password class=board type=password size=20 /></span>
								<span id=login_error_hint align=left style="float:left; width:45%;display:none;"><font color='red'>用户名或密码输入错误,请重新输入</font></span>
							</div>
						</div>

						<div class="login_button2_CM">
							<span style="float:left;"><input type=button id=login_btn name=save onclick='onlogin(1)' value=登录 /></span>
							<span style="float:left;"><input type=reset id=reset_btn style="float:left;" onclick='onlogin(2)' value=取消 /></span>
							<span style="float:left;"><input type=button id=register_btn onclick='onlogin(3)' value=注册 /></span>																
						</div>	
			  </div>
			  
			  <div id="login_footer"></div>		
		
		
		
				
			</div>
		</div> 
	</body>	
	</html>  

大概就是个简单的基于ajax的html普通登陆验证界面。

他的账号密码在登陆的时候都显示了出来

var pass = password.value;
		    pass = pass.replace(/&/g, "123fiberhome321");
		    pass = pass.replace(/!/g, "321telecomadmin123");
		    pass = pass.replace(/#/g, "321useradmin123");
			loc += 'username=' + user_name.value;
			loc += '&password=' + pass;

所以我们只关注这个后面的代码。这里是在防简单的sql注入。

他把一些东西的关键词给过滤了。比如#,!,&,相信懂sql注入的人都知道这些是什么东西

&表示与,!表示非,#表示注释。

因为它写的方式,无法用js直接对其就行修改所以只能采用稍微绕一绕的方法了。

然后再看这段

if ( MENU_PREFIX == "admin" )
		{
			alert("维护帐号已被禁用,请另选帐号登录!");
			document.getElementById("login_error_hint").style.display = "none";
		}
		else if ( MENU_PREFIX == "useradmin" )
		{
			alert("当前已有用户在别处登录,请稍后登录!");
			document.getElementById("login_error_hint").style.display = "none";
		}
		else if ( MENU_PREFIX == "factory" )
		{			
			document.getElementById("login_error_hint").style.display = "";
		}

这时候就很明显了,看那个当前已有用户在别处登陆,这个时候的用户名为useradmin。

所以我们就锁定了用户名为useradmin

这个时候我们发现我们似乎只差密码了。

但是密码吧,很容易就可以百度到- -移动的wifi密码是使用AES加密的。

AES是可以破解的。

然后打开控制台,移动到network那里,这里可以监控他们传输的数据包。随便打一个密码。


发现什么都没有,这时候开始分析AES由什么获取的,一般形式是如何,可以确定为四个字母一个数字,这样是保证128位的,可自行百度,

然后把账号改成' or 1=1#',同时禁用那个过滤的js,即pass=pass。控制台输入。

这个时候,你会发现network给了你正确的回馈。,


可以获取AES加密后的密码为j37772256t

具体怎么解密肯定不能写出来。。大家自己探索一下

要用sql注入和密码学相关知识。


最后我登陆进去了修改了密码,开开心心的刷剧了。

猜你喜欢

转载自blog.csdn.net/tatebrwonjava/article/details/81008758