我如何利用前端技术得到 XXOO 网站的 VIP - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wsscats
V2EX    程序员

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

  •  4
     
  •   wsscats
    Wscats 2016-12-29 10:18:22 +08:00 21641 次点击
    这是一个创建于 3210 天前的主题,其中的信息可能已经有所发展或是发生改变。

    查看作者原文

    网页如图,这里只是说明整个网站的一些技术点,所以不该看的地方我都打上马赛克了,让我们揭开这些网站的整个前端工作原理 image 首先刚进去的时候显示一堆乱七八糟的东西,点进去其中一个页面,下面各种虚假评论,然后每隔几秒钟弹出第几几几个会员充值成功,我们先把这个删掉 image 好了,我们继续研究这个网站内部结构了 正常情况每个页面的视频都是试看几十秒就会提醒你充值,当然这是这类网站的常规套路,我们在浏览器的 Network 观察加载的 js ,我们可以看到里面这段代码 image 这是一份叫做 lsj.mp4.js 的代码的其中一部分,我们可以看到里面有个关键的判断,具体就是判断你是否是会员,如果是那就根据类型是否是 2 返回play_url_arr_oumei数组和play_url_arr数组拼接一个 url 给你,如果你不是会员的话就进入试看的判断,很清晰的看到有一个 url ,那就是试看的短视频的路径

    var isvip = getCookie('lsjyy'); if(isvip != undefined && isvip != '' && isvip.match(rgExp)){}else{} 

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

    function getMp4Url() { var play_name = getParam('play_name'); var type = getParam('type'); var rgExp =/^(v|V)[i|I|p|P|0-9]{2,3}$/g; var isvip = getCookie('lsjyy'); var pic = $('.movie-pic img').attr('src'); var html = '<img src="'+pic+'" style="height:auto; width:100%;display: none;">'; html = ''; var play_url = ''; //vip 会员 if(isvip != undefined && isvip != '' && isvip.match(rgExp)) { var play_mp4 = getCookie('play_mp4'); if(type == 2) { play_url = play_url_arr_oumei[play_rand2]; }else{ play_url = play_url_arr[play_rand]; } } //试看 else if(( play_name != '')&&(play_name != 'undefined')) { play_pic = 'http://oewx8de7n.qnssl.com/9e0120cv23/images/'+play_name+'.jpg'; play_url = 'http://oewx8de7n.qnssl.com/9e0120cv23/images/mp4/'+play_name+'.mp4'; } else play_url = "http://su.cywl5.com/sy/h34.mp4"; return play_url; } 

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

    setCookie('lsj', pay_tee, 'd730'); 

    lsjyy

    setCookie('lsjyy', 'vip', 'd730'); 

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

    function checkOrderStatus() { $.post("./pay/ok.php?action=check&uid="+getCookie('user'), function(data) { var pay_tee = Number(data); if (pay_tee >= 1) { ispay = 1; ispay = true; var lsj = getCookie('lsj'); if(lsj == null) lsj = 0; if(pay_tee > lsj) { setCookie('lsj', pay_tee, 'd730'); } } if ((pay_tee > 0)&&(pay_tee <= s_v1_money)) { setCookie('lsjyy', 'vip', 'd730'); } else if ((pay_tee > s_v1_money)&&(pay_tee <= s_v2_money)) { setCookie('lsjyy', 'vip2', 'd730'); } if (pay_tee >= 1) { var dt1 =Math.round(new Date().getTime()/1000); setCookie('lsjtime', dt1, 'd730'); setCookie("isPayClick",0, 'd1'); var isPayClick = getCookie("isPayClick"); if (isPayClick == 0) window.location.reload(); } // el_checkpay.hide(); }) } 

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

    function clearVIP() { setCookie("lsjyy",0, 's1'); setCookie("lsj",0, 's1'); } 

    如下图,我们在浏览器执行这两个函数,执行成功后我们就能看到 cookie 被成功改写 image image 在这里我设置 lsjyy 为 vip2 ,当然我在后面测试的时候发现这两个值貌似没什么区别 image

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

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

    如果成功完成上面的步骤,我们在控制台输入 showpay()就会看到下图这个弹窗,那证明我们已经成功升级为 VIP... image 我们再次进入其中一个带有视频的网页看看变成 VIP 会会真的有 VIP 的"待遇",我们发现页面内容块变成了空白,控制台报了下面这个错,那是提示有一个值叫play_rand没有定义,其实来到这里我们已经发现我们已经绕过了刚才会员判断,进入我们是会员的判断分支,只是因为一个未定义的值停止了代码的运行 image image 由于这个值我们可以看到是一个数组的索引值,所以我们在控制台全局定义

    var play_rand = 1 

    image 我们把 id 为 play-html 节点的元素样式设置 diplay 为显示,我们就可以看到正常的播放器出来了 image 分析源码得知,它大概的工作原理就是根据 url 的参数,比如play_nameplay_type,根据你是否 VIP 然后加载播放器播放拼接完的 URL , play_name 还含有undefined很不科学,说明有些视频根本只有图没有源 打开 play.html 查看里面的源代码,可以看到视频的链接源 play.html第 21 行

    <script type="text/Javascript"> var cdn_url = 'http://oewx8de7n.qnssl.com/9e0120cv23'; </script> 

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

    var play_url_arr_oumei=new Array(); play_url_arr_oumei[1]=cdn_url+"/vip/2/om_1.mp4"; play_url_arr_oumei[2]=cdn_url+"/vip/2/om_2.mp4"; play_url_arr_oumei[3]=cdn_url+"/vip/2/om_3.mp4"; play_url_arr_oumei[4]=cdn_url+"/vip/2/om_4.mp4"; play_url_arr_oumei[5]=cdn_url+"/vip/2/om_5.mp4"; play_url_arr_oumei[6]=cdn_url+"/vip/2/om_6.mp4"; play_url_arr_oumei[7]=cdn_url+"/vip/try7.mp4"; play_url_arr_oumei[8]=cdn_url+"/vip/try8.mp4"; play_url_arr_oumei[9]=cdn_url+"/vip/try9.mp4"; play_url_arr_oumei[10]=cdn_url+"/vip/try10.mp5"; var play_url_arr=new Array(); play_url_arr[1]=cdn_url+"/vip/try1.mp4"; play_url_arr[2]=cdn_url+"/vip/try2.mp4"; play_url_arr[3]=cdn_url+"vip/try3.mp4"; play_url_arr[4]=cdn_url+"/vip/try4.mp4"; play_url_arr[5]=cdn_url+"/vip/try5.mp4"; play_url_arr[6]=cdn_url+"/vip/try6.mp4"; play_url_arr[7]=cdn_url+"/vip/try7.mp4"; play_url_arr[8]=cdn_url+"/vip/try8.mp4"; play_url_arr[9]=cdn_url+"/vip/try9.mp4"; play_url_arr[10]=cdn_url+"/vip/try10.mp4"; 

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

    image

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

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

    ----------------------update 2016.12.26-------------------------- 技术本身不可耻,可耻的是滥用技术的人! 后续更多内容可关注作者本人@Wscats或者 star 本文

    51 条回复    2017-01-13 10:22:23 +08:00
    ylsc633
        1
    ylsc633  
       2016-12-29 10:26:18 +08:00
    看完以后, 我立刻上 草 x 看了下 会员... 登陆账号... 恩! 还很正常!
    Dlad
        2
    Dlad  
       2016-12-29 10:26:39 +08:00
    楼主好定力
    newbieooOO
        3
    newbieooOO  
       2016-12-29 10:28:59 +08:00
    抓包直接获取视频地址不是更快捷?
    CuminLo
        4
    CuminLo  
       2016-12-29 10:42:17 +08:00
    可以。
    qinxi
        5
    qinxi  
       2016-12-29 10:44:15 +08:00
    newbieooOO
        6
    newbieooOO  
       2016-12-29 10:45:02 +08:00
    哈哈,牙麻碟。 这种网站要是开通移动支付,应该有不少人上当。
    djy0716
        7
    djy0716  
       2016-12-29 10:45:58 +08:00
    楼主开始的打码没啥用嘛
    longr923
        8
    longr923  
       2016-12-29 10:47:04 +08:00
    花样秀,请问,有 GV 么?
    Arrowing
        9
    Arrowing  
       2016-12-29 10:50:00 +08:00
    问个问题,如果 js 代码被混淆的话,作者还能破解吗?
    TheCure
        10
    TheCure  
       2016-12-29 10:56:18 +08:00   2
    ipoh
        11
    ipoh  
       2016-12-29 10:58:05 +08:00
    这就是个诱导支付的网站,楼主花了半天破解了有啥意义。
    Patrick95
        12
    Patrick95  
       2016-12-29 11:15:28 +08:00   3
    这篇文章告诉我们,老司机为了开车真的是拼了命的。
    Ypoem
        13
    Ypoem  
       2016-12-29 11:31:13 +08:00
    楼主大大你好.我能转载文章到公众号么,会著名出处和作者.可以的话咱们加个联系方式谈谈
    Bairrfhoinn
        14
    Bairrfhoinn  
       2016-12-29 11:35:48 +08:00
    楼主这也是蛮拼的。
    kokutou
        15
    kokutou  
       2016-12-29 11:36:59 +08:00 via Android
    老哥,稳。
    asd103
        16
    asd103  
       2016-12-29 11:37:28 +08:00   1
    这个案例告诉我们,不要通过 cookies 来判断是否为 vip 会员,而是后台通过会员标识来判断
    freebit
        17
    freebit  
       2016-12-29 11:53:12 +08:00 via Android   1
    这个应该属于服务器端判断 VIP,明显的逻辑漏洞
    WhyAreYouSoSad
        18
    WhyAreYouSoSad  
       2016-12-29 11:56:50 +08:00
    @Ypoem 一分享到公众号,这车就开不成了
    Phariel
        19
    Phariel  
       2016-12-29 11:57:23 +08:00 via Android
    这其实没有漏洞 有漏洞是因为本来就是诱导你交钱的站点 不是所谓的正统视频站
    Kiuber
        20
    Kiuber  
       2016-12-29 12:10:37 +08:00
    http://vip.cnoubo.cn:8080/wapyy668/index.html
    讲解素材貌似挂了。。。
    jsq2627
        21
    jsq2627  
       2016-12-29 12:31:27 +08:00
    想起来 91 炮也是改 cookie 就能有 vip
    daolin998
        22
    daolin998  
       2016-12-29 12:33:25 +08:00 via iPhone
    居然有人用 cn 域名干黄网 牛逼
    kingddc314
        23
    kingddc314  
       2016-12-29 12:53:42 +08:00 via Android
    司机稳
    nikubenki
        24
    nikubenki  
       2016-12-29 13:01:33 +08:00
    近视眼表示打码并没有什么用
    warlue
        25
    warlue  
       2016-12-29 13:07:13 +08:00
    每次都是评论最诱人
    cnbeining
        26
    cnbeining  
       2016-12-29 13:11:29 +08:00   1
    在七牛上干大人站?

    思路惊奇啊少年 自己打车上央视找新闻联播栏目组认罪 录完直接打车上看守所给自己关进去得了给赵老爷省心。
    wxl1380610
        27
    wxl1380610  
       2016-12-29 14:36:41 +08:00
    广告吧
    shellcodecow
        28
    shellcodecow  
       2016-12-29 14:41:21 +08:00
    这是骗充值的网站...资源也不是最新的.. 一般这种会生成很多个进行推广,基本所有东西都在前端
    yghack
        29
    yghack  
       2016-12-29 14:44:49 +08:00
    @jsq2627 老哥,稳!
    pigsinthesky
        30
    pigsinthesky  
       2016-12-29 15:00:26 +08:00
    star 稳步上升中
    leyle
        31
    leyle  
       2016-12-29 15:32:22 +08:00
    之前对这类网站好奇,随手搜了个,

    [中艺蓝金科技(北京)有限公司以看片为名诱导客户支付宝充值,涉嫌欺诈! -- 聚投诉]
    http://ts.21cn.com/tousu/show/id/92544

    居然还可以投诉,然后我又在反馈里面找到对应的网站,专门做了个退钱的页面。。。

    这个行业估计暴利,很多人忍气吞声了。
    iamzhuyi
        32
    iamzhuyi  
       2016-12-29 16:17:27 +08:00
    @jsq2627 老司机求开车
    Baymaxbowen
        33
    Baymaxbowen  
       2016-12-29 16:30:45 +08:00
    厉害了
    hinate
        34
    hinate  
       2016-12-29 16:36:46 +08:00
    @jsq2627 老司机发车吗
    AlisaDestiny
        35
    AlisaDestiny  
       2016-12-29 16:38:30 +08:00 via Android
    事实说明了混淆 JS 代码的重要性。
    Xrong
        36
    Xrong  
       2016-12-29 16:39:27 +08:00
    厉害了, word 哥。。。
    xspoco
        37
    xspoco  
       2016-12-29 20:08:27 +08:00
    @yghack
    @iamzhuyi
    @hinate

    t/224224 貌似不行了?
    Kiuber
        38
    Kiuber  
       2016-12-29 21:00:44 +08:00
    @jsq2627 老司机带带我~
    shenhongbang
        39
    shenhongbang  
       2016-12-29 21:37:55 +08:00
    我直接输入楼主解出来的链接为啥不行啊
    techmoe
        40
    techmoe  
       2016-12-29 22:08:50 +08:00 via Android
    网址就这样暴露了!()
    TheCure
        41
    TheCure  
       2016-12-29 22:32:35 +08:00   1
    zingl
        42
    zingl  
       2016-12-30 00:20:43 +08:00
    会这个的本来也不可能付费看这种网站
    所以对人家根本没毛影响
    taojing10
        43
    taojing10  
       2016-12-30 00:48:52 +08:00
    厉害厉害!
    neilp
        44
    neilp  
       2016-12-30 01:29:03 +08:00 via iPhone
    把你这前端的手艺用在正途,能挣不少钱,回来把这网站会员买了根本不叫事好吗。 能节约多少时间啊
    setonfocus
        45
    setonfocus  
       2016-12-30 08:54:20 +08:00
    @AlisaDestiny 就算混淆加密,也是照样能解的。所以,不应该在前端验证这种信息
    dearmymy
        46
    dearmymy  
       2016-12-30 09:01:15 +08:00 via iPhone
    @Arrowing js 混淆就是麻烦点而已
    setonfocus
        47
    setonfocus  
       2016-12-30 09:06:53 +08:00
    看到了 CKplayer
    wsscats
        48
    wsscats  
    OP
       2016-12-30 15:04:44 +08:00
    monolight
        49
    monolight  
       2016-12-31 21:23:19 +08:00
    敢用 cn 域名来玩也是牛逼
    mingyun
        50
    mingyun  
       2017-01-01 20:01:20 +08:00
    wsscats
        51
    wsscats  
    OP
       2017-01-13 10:22:23 +08:00
    @shenhongbang 有些几个链接失效,还有些可以
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1332 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 17:10 PVG 01:10 LAX 10:10 JFK 13:10
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86