刷一个基于html5开发的网页圣诞游戏

16 篇文章 0 订阅

    圣诞之际,到处都有很多庆祝的方式,学校一个学生技术团队出了一个圣诞网页游戏,上链接http://christmas.hustonline.net/game1。下面这是奖项,

                     

主要是首页的奖品很诱人,从昨天也就是平安夜这天开始就开始上线了,看了一下这基于html5的游戏确实还不赖,个人觉得js这个发展趋势还是真的不容小觑啊!然后想着要看能不能外挂一下的!结果昨天很容易就破了,因为虽然js前台写的很好,但是后台没什么判断,处理的比较粗糙。因此和别人说了之后,今天圣诞节就改进了不少,每次提交分数的时候先请求一个auth密文,然后再和分数一起发回服务器进行判断,其中还特别是用了cookie存储了用户id和一段加密字符。为此是用了php的curl库,开始了刷分的过程。

首先,在手动玩一次之后,开启网络后台发现js异步发送了两个请求,如下图:


第一个是先获取auth密文,查看详细信息可以发现发送的内容和返回的内容,如下:

(ajax post的数据)

(返回的auth密文)

这些密文将在第二个请求中按照一定的规则发送到后台进行验证。下面分析第二个请求的内容:


经过多次试验,发现发送的数据前两对数据就是来自第一次请求返回的四个密文,分布是按照第一个请求返回的index数组去掉对应个数个字符后截取8个和13个字符组成发送请求的信息。然后再加上name、score等其他信息一起发送即可。经过以上分析,最终的源码给出如下:

<?php
	set_time_limit(60);
	ignore_user_abort(true);
	date_default_timezone_set('PRC');
	error_reporting(0);
	$start = microtime(true);
	
	//获取auth
	echo "<strong>开始发送请求end_auth...</strong><br/>";
	$headers['Content-Type'] = 'application/x-www-form-urlencoded'; 
	$headers['Content-Length'] = 20; 
	$headers['Accept-Charset'] = 'UTF-8,*;q=0.5'; 
	$headers['Host'] = 'christmas.hustonline.net';
	$headers['Accept-Encoding'] = 'gzip,deflate,sdch'; 
	$headers['Origin'] = 'http://christmas.hustonline.net';
	$headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31'; 
	//$headers['X-Requested-With'] = 'XMLHttpRequest';
	$headers['Referer'] = 'http://christmas.hustonline.net/game1';
	$cookieStr = 'Hm_lvt_9b10ce606494df8b25b4ee1e6c00852d=1385282383,1386344607; uid=4007; PHPSESSID=thgk7nd8b637ll0hlcsrosq550';
	
	$postStr1 = "ARG1=0&ARG2=1&ARG3=2";		
	$ch = curl_init();
	curl_setopt ($ch, CURLOPT_URL, "http://christmas.hustonline.net/game1/end_auth");
	curl_setopt ($ch, CURLOPT_HTTPHEADER , $headers );
	curl_setopt( $ch, CURLOPT_HEADER, 0);   //不返回响应头信息
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);   //保留返回状态信息
	curl_setopt($ch, CURLOPT_COOKIE,$cookieStr);
	curl_setopt($ch, CURLOPT_POST, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $postStr1);
	$backInfo = curl_exec($ch);
	curl_close ($ch);	
	$auth = json_decode($backInfo,true);
	//auth为一个二维数组,index包含四个数字和keys包含四个加密字符串echo "<pre>";var_dump($auth);echo "</pre>";
	
	//构造对应的index起始的8个和13个字符的请求字符串	
	$authIndex1 = substr($auth['keys'][0],$auth['index'][0],8);
	$authKeys1 = substr($auth['keys'][1],$auth['index'][1],13);
	$authIndex2 = substr($auth['keys'][2],$auth['index'][2],8);
	$authKeys2 = substr($auth['keys'][3],$auth['index'][3],13);
	$msg = json_encode(array($authIndex1=>$authKeys1,$authIndex2=>$authKeys2,"name"=>"oshyn","score"=>97900,"tel"=>13647215948,"game"=>1));
	$postStr =  "msg=${msg}";
	//print $postStr."\n";
	
	//请求刷分数
	$scoreHeader = array();	
	$scoreHeader['Accept'] = '*/*';
	$scoreHeader['Accept-Charset'] = 'UTF-8,*;q=0.5';
	$scoreHeader['Accept-Language'] = 'zh-CN,zh;q=0.8';
	$scoreHeader['Connection'] = 'keep-alive';
	$scoreHeader['Content-Length'] = strlen($postStr);
	$scoreHeader['Content-Type'] = 'application/x-www-form-urlencoded';
	$scoreHeader['User-Agent'] = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)';
	$scoreHeader['PHPSESSID'] = 'thgk7nd8b637ll0hlcsrosq550';
	$scoreHeader['Host'] = 'christmas.hustonline.net';
	$scoreHeader['Origin'] = 'http://christmas.hustonline.net';
	$scoreHeader['Referer'] = 'http://christmas.hustonline.net/game1';
	
	$scoreCh = curl_init();
	curl_setopt ($scoreCh, CURLOPT_URL, "http://christmas.hustonline.net/game1/upload_score");
	curl_setopt ($scoreCh, CURLOPT_HTTPHEADER , $scoreHeader );
	curl_setopt( $scoreCh, CURLOPT_HEADER, 0);   //不返回响应头信息
	curl_setopt( $scoreCh, CURLOPT_RETURNTRANSFER, 1);   //保留返回状态信息
	curl_setopt($scoreCh, CURLOPT_COOKIE,$cookieStr);
	curl_setopt($scoreCh, CURLOPT_POST, true);
	curl_setopt($scoreCh, CURLOPT_POSTFIELDS, $postStr);
	$back = curl_exec($scoreCh);
	curl_close ($scoreCh);	
	echo "<br><strong>返回结果:$back</strong>";
	$end = microtime(true);
	$taketime = sprintf('%.5f',$end - $start);
	echo "<br/><strong>请求完成!用时${taketime}s.</strong><br/>";

?>
 
请求完成后,返回正确信息如下图所示:


完成之后,可以设置一个score分数值发送即可。当然这只是圣诞节活动,仅供娱乐,不支持使用任意恶性手段强制破解,也是出于对php的curl函数库的使用以及http协议的理解的基础和学习上娱乐而已。和别人交流的时候,有人说用TCP层传输分数等信息会更安全,不如这个游戏是基于html5的,因此只有现代浏览器支持,因此可以使用websocket来传输,不过原理都差不多。其实这个就是要构造一个完善的auth验证机制防止刷分。

最后还是祝大家圣诞节快乐!



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
圣诞节是西方国家的一个重要节日,为了庆祝这个节日,许多人会制作与圣诞节相关的网页。而HTML5是一种用于构建网页的技术。那么,圣诞网页HTML5是指使用HTML5技术制作的与圣诞节有关的网页。 使用HTML5技术可以使我们创建出丰富多彩、互动性强的圣诞网页。我们可以利用HTML5的动画、音频和视频功能,在网页中加入跳动的雪花、圣诞树摇曳的动态效果,或者播放圣诞歌曲和视频,从而增添节日气氛。此外,HTML5还提供了响应式布局的功能,使得我们可以根据不同设备屏幕大小自动调整网页布局,确保用户在任何设备上都能够良好地浏览圣诞网页。 在圣诞网页HTML5中,还可以增加一些互动的元素,如游戏、问卷调查或送礼物等。比如,我们可以设计一个圣诞主题的小游戏,让用户通过点击或拖拽的方式参与其中,增加网页的趣味性。或者,在网页中设置一个问卷调查,询问用户对圣诞节的看法和期待,以便收集反馈信息。 在制作圣诞网页HTML5时,我们需要熟悉HTML5的语法和标签,掌握CSS和JavaScript的基础知识,用于为网页添加样式和交互功能。此外,还可以使用一些HTML5的框架和库,如Bootstrap和jQuery等,来加快网页开发的速度。 总之,圣诞网页HTML5利用HTML5技术和功能,能够制作出更加丰富多彩、互动性强的圣诞网页,给用户带来更好的浏览和参与体验。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值