阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 2501|回复: 0

我如何用前端技术得到 XXOO 网站的 VIP

[复制链接]

4213

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
127149
QQ
发表于 2016-12-25 12:50:11 | 显示全部楼层 |阅读模式

查看作者原文

讲解素材

网页如图,这里只是说明整个网站的一些技术点,所以不该看的地方我都打上马赛克了,让我们揭开这些网站的整个前端工作原理

首先刚进去的时候显示一堆乱七八糟的东西,点进去其中一个页面,下面各种虚假评论,然后每隔几秒钟弹出第几几几个会员充值成功,我们先把这个删掉

好了,我们继续研究这个网站内部结构了

正常情况每个页面的视频都是试看几十秒就会提醒你充值,当然这是这类网站的常规套路,我们在浏览器的Network观察加载的js,我们可以看到里面这段代码

这是一份叫做lsj.mp4.js的代码的其中一部分,我们可以看到里面有个关键的判断,具体就是判断你是否是会员,如果是那就根据类型是否是2返回 play_url_arr_oumei数组和 play_url_arr 数组拼接一个url给你,如果你不是会员的话就进入试看的判断,很清晰的看到有一个url,那就是试看的短视频的路径


  1. var isvip = getCookie('lsjyy');
  2. if(isvip != undefined && isvip != ''  && isvip.match(rgExp)){}else{}
复制代码

上面这两句还告诉我们第二个关键点就是我们可以根据 isvip 的cookie值来伪造身份,这个cookie就是保存到我们的本地浏览器上,所以如果我们能成功改写它的话我们就能变成会员绕过这个判断,这份代码已经封装好 getCookie ,所以我们可以在控制台直接调用来改写cookie值,但是问题来了,我们应该改成什么值才能绕过判断呢,我们继续看源代码搜索答案

  1. function getMp4Url() {
  2.         var play_name = getParam('play_name');
  3.         var type = getParam('type');
  4.         var rgExp =/^(v|V)[i|I|p|P|0-9]{2,3}$/g;
  5.         var isvip = getCookie('lsjyy');
  6.         var pic = $('.movie-pic img').attr('src');
  7.         var html = '<img src="'+pic+'" style="height:auto; width:100%;display: none;">';
  8.         html = '';
  9.         var play_url = '';
  10.         //vip会员
  11.         if(isvip != undefined && isvip != ''  && isvip.match(rgExp))
  12.         {
  13.             var play_mp4 = getCookie('play_mp4');
  14.             if(type == 2)
  15.             {
  16.                 play_url = play_url_arr_oumei[play_rand2];

  17.             }else{
  18.                 play_url = play_url_arr[play_rand];

  19.             }
  20.         }
  21.         //试看
  22.         else if(( play_name != '')&&(play_name != 'undefined'))
  23.         {
  24.             
  25.             play_pic = 'http://oewx8de7n.qnssl.com/9e0120cv23/images/'+play_name+'.jpg';
  26.             play_url = 'http://oewx8de7n.qnssl.com/9e0120cv23/images/mp4/'+play_name+'.mp4';
  27.         }
  28.         else
  29.             play_url =  "http://su.cywl5.com/sy/h34.mp4";
  30.         return play_url;
  31. }
复制代码


在lsj.pay.js?v=256这份代码的279行中我们又找到了一个线索,我们从代码看到,如果支付成功会在本地浏览器设置用户的cookie值,有两个关键的值出现了,分别是 lsjlsjyy

lsj

  1. setCookie('lsj', pay_tee, 'd730');
复制代码

lsjyy

  1. setCookie('lsjyy', 'vip', 'd730');
复制代码

其实我想了很久这个名字跟vip有什么关联,估计这个网站的作者想写的是老司机和老司机YY的意思吧,不过不管它是什么意思,现在只要我们尝试用它封装好的 setCookie 方法自己改写这两个cookie值,就能在本地顺利成为会员,绕过刚才的判断条件了

lsj.pay.js

  1. function checkOrderStatus() {
  2.     $.post("./pay/ok.php?action=check&uid="+getCookie('user'), function(data) {
  3.         var pay_tee = Number(data);
  4.         if (pay_tee >= 1)
  5.         {
  6.             ispay = 1;
  7.             ispay = true;
  8.             var lsj = getCookie('lsj');
  9.             if(lsj == null) lsj = 0;
  10.             if(pay_tee > lsj)
  11.             {   
  12.                 setCookie('lsj', pay_tee, 'd730');
  13.             }
  14.         }   
  15.         if ((pay_tee > 0)&&(pay_tee <= s_v1_money))
  16.         {
  17.             setCookie('lsjyy', 'vip', 'd730');
  18.         }
  19.         else if ((pay_tee > s_v1_money)&&(pay_tee <= s_v2_money))
  20.         {
  21.             setCookie('lsjyy', 'vip2', 'd730');         
  22.         }
  23.         if (pay_tee >= 1)
  24.         {
  25.             var dt1 =Math.round(new Date().getTime()/1000);
  26.             setCookie('lsjtime', dt1, 'd730');
  27.             setCookie("isPayClick",0, 'd1');
  28.             var isPayClick = getCookie("isPayClick");
  29.             if (isPayClick == 0)
  30.                 window.location.reload();
  31.         }
  32.        // el_checkpay.hide();
  33.     })
  34. }
复制代码

其实往下也可以看到有一个clearVIP函数,更肯定了刚才我们的结论,VIP和非VIP其实就是这两个值在作怪,所以我们默认的值应该就是clearVIP函数设置的值

  1. function clearVIP()
  2. {
  3.     setCookie("lsjyy",0, 's1');
  4.     setCookie("lsj",0, 's1');
  5. }
复制代码

如下图,我们在浏览器执行这两个函数,执行成功后我们就能看到cookie被成功改写


在这里我设置lsjyy为vip2,当然我在后面测试的时候发现这两个值貌似没什么区别


然后我们可以用lsj.pay.js第179行的 showpay 函数来检测是否已经是成功变成VIP

  1. function showpay() {
  2.     var rgExp =/^(v|V)[i|I|p|P|0-9]{2,3}$/g;
  3.     var isvip = getCookie('lsjyy');
  4.     if(isvip != undefined && isvip != ''  && isvip.match(rgExp))
  5.     {
  6.         alert('您已经是vip了哦.');
  7.         return false;
  8.     }
  9.    //省略后面的代码
  10. }
复制代码

如果成功完成上面的步骤,我们在控制台输入showpay()就会看到下图这个弹窗,那证明我们已经成功升级为VIP...

我们再次进入其中一个带有视频的网页看看变成VIP会会真的有VIP的"待遇",我们发现页面内容块变成了空白,控制台报了下面这个错,那是提示有一个值叫 play_rand没有定义,其实来到这里我们已经发现我们已经绕过了刚才会员判断,进入我们是会员的判断分支,只是因为一个未定义的值停止了代码的运行

由于这个值我们可以看到是一个数组的索引值,所以我们在控制台全局定义

  1. var play_rand = 1
复制代码

我们把id为play-html节点的元素样式设置diplay为显示,我们就可以看到正常的播放器出来了

分析源码得知,它大概的工作原理就是根据url的参数,比如 play_nameplay_type ,根据你是否VIP然后加载播放器播放拼接完的URL,play_name还含有 undefined很不科学,说明有些视频根本只有图没有源

打开play.html查看里面的源代码,可以看到视频的链接源

play.html第21行

  1. <script type="text/javascript">
  2.     var cdn_url = 'http://oewx8de7n.qnssl.com/9e0120cv23';
  3. </script>
复制代码

往下面看我们可以看到刚才 play_rand 选取的对应的那个视频,事实上 play_url_arr_oumeiplay_url_arr 数组已经定义好了VIP可以观看的这十几个视频,所以不管怎么样付钱后都是看这十几个里面的其中一个,在这里其实已经可以自己拼接对应的链接进入相应的视频

play.html第324行

  1. var play_url_arr_oumei=new Array();
  2.     play_url_arr_oumei[1]=cdn_url+"/vip/2/om_1.mp4";
  3.     play_url_arr_oumei[2]=cdn_url+"/vip/2/om_2.mp4";
  4.     play_url_arr_oumei[3]=cdn_url+"/vip/2/om_3.mp4";
  5.     play_url_arr_oumei[4]=cdn_url+"/vip/2/om_4.mp4";
  6.     play_url_arr_oumei[5]=cdn_url+"/vip/2/om_5.mp4";
  7.     play_url_arr_oumei[6]=cdn_url+"/vip/2/om_6.mp4";
  8.     play_url_arr_oumei[7]=cdn_url+"/vip/try7.mp4";
  9.     play_url_arr_oumei[8]=cdn_url+"/vip/try8.mp4";
  10.     play_url_arr_oumei[9]=cdn_url+"/vip/try9.mp4";
  11.     play_url_arr_oumei[10]=cdn_url+"/vip/try10.mp5";
  12.     var play_url_arr=new Array();
  13.     play_url_arr[1]=cdn_url+"/vip/try1.mp4";
  14.     play_url_arr[2]=cdn_url+"/vip/try2.mp4";
  15.     play_url_arr[3]=cdn_url+"/vip/try3.mp4";
  16.     play_url_arr[4]=cdn_url+"/vip/try4.mp4";
  17.     play_url_arr[5]=cdn_url+"/vip/try5.mp4";
  18.     play_url_arr[6]=cdn_url+"/vip/try6.mp4";
  19.     play_url_arr[7]=cdn_url+"/vip/try7.mp4";
  20.     play_url_arr[8]=cdn_url+"/vip/try8.mp4";
  21.     play_url_arr[9]=cdn_url+"/vip/try9.mp4";
  22.     play_url_arr[10]=cdn_url+"/vip/try10.mp4";
复制代码

当然我们为了证明我们刚才上面的推测,我们可以在控制台把 lsj.mp4.jsgetMp4Url函数 执行一次

我们可以看到一个可用的链接就这样出现了

当然你可以再执行如下代码,让它在网页端执行,关键就是用 playHtml3函数 加载播放器,并打开拼接好的视频链接,有时候加载的是一张图片,更有时候加载的视频链接也根本无法播放,其实不管是否会员,最后也只是播放在页面最后定义好的那十几个视频,支付变成会员只是它们把数据入库,然后帮你设置个cookie的过程而已

当然这些网站的前端人员的代码和注释还是挺可笑的


至此,就可以看懂这种网站的工作原理了,所以遇到小心上当了



捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2025-1-8 14:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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