js逆向入门网站分析(某空气质量监测平台)

news/2024/5/20 16:59:07/文章来源:https://blog.csdn.net/qq_50958709/article/details/122271967

文章目录

  • 前言
  • 一、瞧一瞧网站是啥样呢
  • 二、新的开始,新的挑战
    • 2.1通过第一个 eval
    • 2.2分析第二个eval
  • 三、模拟得到服务器传回的数据
    • 3.1如何得到关键js文件
    • 3.2如何模拟运行eval
    • 3.3匹配参数
    • 3.4发出请求
    • 3.5解密数据


前言

又要到放假的时间啦,学习了好一段时间的js逆向,想起之前远哥提到的一个js逆向入门的网站,就准备实践一下啦。如果有什么问题呢,欢迎大佬们指出。

一、瞧一瞧网站是啥样呢

网址:aHR0cHM6Ly93d3cuYXFpc3R1ZHkuY24v

进入网址哈,还挺可以的哎。
在这里插入图片描述
但是,很奇怪的事情就突然发生了哎,它变了。
在这里插入图片描述
当我们准备打开控制台准备看看呢,就直接进入了一个VM下的断点呢。
在这里插入图片描述
好吧,那就需要过掉这个检测呢。通过对堆栈的查看,我们点击最开始那个,随便下个断点,然后刷新一下,就可以看到下面的样子呢。
在这里插入图片描述
那下面就是很经典的操作了,在确定txsdefwsw函数并没有很大用的情况下呢,在运行这个函数前随便下个断点,然后直接函数置空
txsdefwsw = function(){}

置空之后呢,直接一键运行到底,啊哈,居然又出现了最开始那样又被检测了。好吧,不过这次注意到了,好像那个字,和上一幅图中 endebug函数一样哎,那好说呢,那就在 endebug函数里面下个断点,看看是哪个调用的呢。
在这里插入图片描述
好家伙呢,居然是个eval执行的呢,既然是eval来执行,那我们就搜一搜嘛,看一看嘛。
有点小惊喜了,发现了有debug detect,那我们就可以猜测是从这两个eval运行中出了问题呢,那怎么办呢,下断点嘛()。看看每个eval出来是什么的结果呢。
在这里插入图片描述
好家伙呢,这两个函数不就是我们上面那幅图的函数嘛,而且既然是你是单独出来的一个函数,那直接上家伙,本地替换,干掉。
在这里插入图片描述
正当我开心的时候,准备一把哈梭的时候又出现问题了…

话不多说,先上图。
在这里插入图片描述
最开始的栈
在这里插入图片描述
又是两个eval,不过呢,有一个很奇妙的地方呢,我们看这个js文件的url地址 : aHR0cHM6Ly93d3cuYXFpc3R1ZHkuY24vaHRtbC9jaXR5X3JlYWx0aW1lLnBocD92PTIuMw==
然后,一打开,好家伙,直接新的开始了啊!!!!
在这里插入图片描述
至于为什么我会关注到这个链接呢,因为你看这个js写得就像一个页面,所以就打开看看喏(这只是个人感觉哈。)

二、新的开始,新的挑战

呀哈,一进来,居然禁止了右键和F12。。。。。。呃,那就多动点几下吧,从工具进入控制台。

进入控制台后,重新刷新一下呢,话不多说上图。
在这里插入图片描述

呃,又发现有两个eval,那就下断点呢。(好像听别人讲eval断不了,但是实践下来又能断,但是好像要看运气,刷几次就能断住呢。不过在刷新前,要清空本地的储存)。如下图:
在这里插入图片描述
因为在加密数据保存在本地存储里面,而这个加密数据是在第二个eval里面的有关函数请求服务器返回的数据。呃,扯远了,先回归正题,然后继续分析这两个eval。
下断成功后,看下第一个解密后的内容吧。
在这里插入图片描述
很神奇呢,一看就是一个检测的js文件。好嘛,那这不简单嘛,就像上面那个对于eval处理的方法嘛,删除大法嘛。嘿嘿,这我就不得不说,小伙子想少了吧,这个js文件是动态变化的,而且更离谱的就是你后面要用的js文件全都是动态的。但目前我只遇到三种情况,再出现其他的情况也没太大关系,在添加一种解决方案就行了噻,问题不大。呃,好像又走远了,下面看看第二个eval是啥,反正就是很重要的东西。后面分析的时候在具体聊聊。

2.1通过第一个 eval

因为这个eval运行的结果,是一个检测的js文件嘛,所以不过掉这个对于我们后面的调试并不太友好呢。我这边用的方法就是置空。如下图:

在这里插入图片描述
这样就过掉啦,如果各位大佬还有其他方法,dddd啊。

2.2分析第二个eval

在这里插入图片描述
分析第二个eval揭秘出来的,那一排绿色的字,真的好亮眼呀,真喜欢这样的注释呢。所以下面的都是重点,怎么办呢,下断点呀,为了稳妥能下几个就下几个,我就不相信他不会断下来呢。
一键哈梭!!!
发现关键点在
在这里插入图片描述
这个函数呢,进去一看
在这里插入图片描述
看这几个关键点,这我就不得不说了,我之前一直在想被加密的数据为什么没有在浏览器抓包中看到,知道我用了fiddle,才在fiddle上看到。然后就想到,可能是XMLHttpRequest从后台请求数据的,不太懂的可以看这篇文章呢。看这里看这里XMLHttpRequest

从上面那个图,我们还是可以看到很多东西,比如请求的url,请求的形式是post,还有请求时的data参数是什么,如何对加密数据解密的。只要我们得到这些就可以模拟请求得到加密数据啦。这不是离目标又进了一步呢。

三、模拟得到服务器传回的数据

现在呢,停下来理一理思路。我们当前的目标就是得到服务器返回的的数据,因为是post请求,那么就需要相关参数,那如何获得参数呢,首要目标就是需要当前的js文件,因为我们可以看到,无论是请求还是数据的解密,都涉及这个js文件,拿到这个文件就是我们首要的目标。

3.1如何得到关键js文件

前文提到,这个js文件是动态的,那么如何得到呢?慢慢找吧,而且看文件执行也是一个eval,那么是否我们可以猜测也想之前那种,eval运行解密后的字符串呢?(当然呢这是我搞完后写的嘛,难免有些作弊的感觉。),那现在找一找吧。
这个东西也是难搞哦。。。。。。反正一顿乱找,哎,就找到了。

在这里插入图片描述
看着文件就很怪,同时也是一个eval执行的,就很值得怀疑,加上它在很前面的位置,所以我们可以开启事件监听中的脚本拦截,一个一个js文件执行看一看。

在这里插入图片描述
突然,运行到这里,是不是值得留意一下呢,都很直白的告诉你了,这点又encrypt和decode,那就看一下这两个eval是什么样子呢
在这里插入图片描述
这个是一个base64这些嘛看下另外一个呢。
在这里插入图片描述
一个小小的函数呢。
这里就要停一停了,因为之前那些js文件都是动态的,我们是否也需要去思考和验证这个js文件是否也是动态的呢。不过好在,这两个不是动态的,耶耶,那代表如果后面需要用到,可以直接写死。
继续执行。。。。。

挺好的,下一个就是我们要去看的js文件,那就看看结果处理啊的结果是什么样子的呢?
在这里插入图片描述
这点就必须提一下了,看这个函数名字和我们上一步那个函数名字是不是一样的啊。那通了呀。先去请求这个url,然后用上面两个函数 (因为是固定的可以写死)直接解密出来,不就是我们需要的嘛,但不能这么肯定嘛,万一不是这个地方就很尬尴了呀,那就继续走几步走几步看看结果嘛
在这里插入图片描述
这是很妙吧。
那这个时候就又有问题了,它是eval运行出来的结果,我们得到呢?

3.2如何模拟运行eval

这里有个大佬使用selenium得到的结果,看这里啊
但是呢,我采用另一种方法,可以先看下这篇文章了解一下eval
既然它是一个eval,无法把结果导出来,那我是不是可以在函数里面加点料呢,我能不能把最后得到的结果变成全局变量呢?可以吧,就像这样
在这里插入图片描述
这是结果呢
在这里插入图片描述
但这个是运气好的情况下才能这样的结果,因为前文提到,js文件是动态变化的,这个呀也是动态变化的,但好在情况不多,我目前碰到四种,只是需要对不同结果进行不同的分析。
这是我收集到的三种情况以及处理的方式:
1.一种是直接出结果 结果不含换行
2.eval(dswejwehxt(dswejwehxt 这种 结果含换行
3.eval(dswejwehxt( 结果含换行 提取出参数后调用dswejwehxt 就直接出结果
4.eval(dswejwehxt( dswejwehxt 处理后是一个eval(function,然后需要再来一次get_decode 结果不含换行
这其中里面有些是含有换行的有些是不含有换行的,这些就有些烦,因为后面需要用正则来匹配参数,又要分不同的情况来写。这里有个小注意的的问题,含有换行的结果使用execjs来运行js,好像会报错,不知道你们会不会,反正我是有些问题,然后我就采用了VM2,就没有报错啦,如果你们也遇到了可以采用VM2来试一试。
而对于上面的四种情况,可以自己收集一下,因为我后面是用正则来匹配一些关键的东西,保存下来可以方便后面的调试。

3.3匹配参数

再得到了最最关键的js文件的明文后,后面的就是很简单的事了。(其实最关键的就是得到这个文件的明文,下面就是我自己去得到参数的方法,但不知这一种呢)
直接上正则匹配,再次回到最开始图呢
在这里插入图片描述
注意一下哈,这些都是变化的哈。
先分析var p9AZyDB = pvSQ9fn9Fva0v8zu(m6215FQX6, oqMQlv3Qpg);
其中里面的m6215FQX6, oqMQlv3Qpg,这俩都是固定的,我们只需要正则找到这个函数名,然后传入参数,接受返回值的就行了噻。
还有呢,因为上文提到,结果是含有换行和不换行之分,所以可能需要单独分情况匹配得到结果。

3.4发出请求

因为上一个图中展示了url,同时也经过上面的分析也得到了请求的参数,那就直接上请求。但这个请求有些意外。看这里吧
自己可以用fiddle去看一下这个是什么类型请求。

3.5解密数据

在这里插入图片描述
再次看这一副图,就是这点,也可以采取正则提取函数名,然后传入上一步中得到的数据,进行解密就行啦。
好啦就没啦,最后还得拿出结果,看一下是否成功嘛,没结果上面说的都是假的嘛
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_871180.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

novipnoad电影网站分析

文章目录 前言一.url跳转反调试二.整个过程分析2.1ts重定向2.2 寻找m3u82.3寻找ckey 声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 前言 记录远哥讲的一次…

学习前端的有用网站

藏匿 1. 文档型教程 1.1 HTML教程 W3C的HTML教程 1.2 CSS教程 W3C的CSS教程 W3C Candidate Recommendation Draft 1.3 JavaScript教程 MDN的JavaScript教程 2.视频型教程 2.1 HTML & CSS Udemy排名第一的 HTML5CSS3 课程 2.1 JavaScript Udemy排名第一的JavaSc…

大型分布式网站架构

大型分布式网站架构 2016-02-22 17:50 480人阅读 评论(0) 收藏 举报 大型分布式网站架构技术总结 本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架…

各大日语学习网站整理

日语学习网站 一、http://www.gavo.t.u-tokyo.ac.jp/ojad/search 二、http://yomikatawa.com/ 三、http://nlt.tsukuba.lagoinst.info/ 四、http://j-nihongo.com/about/ 五、https://mnamae.jp/ 六、http://18.art-studio.cc/~koenoizumi/ 七、http://www.jakka.jp/index.htm…

c# 爬虫之(搜狗微信网站)

1、需求获取搜狗微信网站 通过关键词搜索得到的结果列表及详情 2、通过跟踪发现具体的url为:https://weixin.sogou.com/weixin?query%E9%92%9B%E6%A3%92%E6%BB%A4%E8%8A%AF&_sug_type_&s_frominput&_sug_n&type2&page2&ieutf8 其中query…

基于ASP.NET的日语学习网站 毕业设计成品讲解(程序+论文)-王翔-专题视频课程...

基于ASP.NET的日语学习网站 毕业设计成品讲解(程序论文)—1467人已学习 课程介绍 本文是基于ASP.NET的日语学习网站的毕业设计成品讲解,包括整套网站程序、数据库和配套的论文,网站期初使用的技术和设计比较一般,本…

基于ASP.NET网站开发的 SQL SERVER 数据库教学辅导 新手基础实用技术精讲-王翔-专题视频课程...

基于ASP.NET网站开发的 SQL SERVER 数据库教学辅导 新手基础实用技术精讲—1183人已学习 课程介绍 ASP.NET网站开发 数据库教学辅导 实用技术精讲,主要针对基于ASP.NET的Visual Studio 2010和SQL SERVER 2008 R2下开发的基础数据库部分 课程收益 快速掌握对数据库开发的基础…

从小型网站到超大规模网站的MySQL参考架构

转自:http://www.infoq.com/cn/news/2013/03/MySQL-Reference-Architectures Oracle发布《面向大规模可伸缩网站基础设施的MySQL参考架构》白皮书,针对将MySQL用作数据存储的不同类型和不同规模的网站给出了推荐的拓扑结构。 根据分别提供4类服务——用…

读书笔记-大型网站架构案例分析

从事传统软件行业多年,一直钻研于基于企业应用环境下的快速开发平台,而这种平台应用场景同时在线人数也不会超过百人,同一业务并发数在同一时间点或段内出现猛烈的增长,曾经也一度想设计一个怎样怎么样的NB架构,但现在…

网站交互相互技术

cookie和session什么区别? 1、cookie存本地,session存服务器 2、cookie只能存最大4k,session可以无限大

jmeter与apache测试网站并发

本文主要介绍性能测试中的常用工具jmeter的使用方式,以方便开发人员在自测过程中就能自己动手对系统进行自动压测和模拟用户操作访问请求。最后还用linux下的压测工具ab做了简单对比。 1. Jmeter相关概念简介: JMeter是Apache组织开发的基于Java的压…

大型网站架构演变过程理解

web动静资源分离 浏览器的请求分为静态资源请求,与动态资源请求。 静态有:html文件,js脚本,css等。 动态有:jsp,php等 http服务器用来处理静态请求,应用服务器处理动态请求。分别可以称为前端…

解决火车头7.6版本无法采集部分https网站处理方法

因为现在大多数网站都采取https,导致很多网站无法采集。那哪行,肯定得有解决办法,今日就说说关于火车头采集器7.6版本无法采集部分https网站处理方法。 火车头7.6版本由于发布时间久远,虽然采集器大部分功能都还可以正常使用&…

destooon7.0装修网站源码带分站多地区带设计报价

源码为destoon7.0系统,整站打包,功能很多,不保证无bug,请测试好演示站; 安装测试环境为:宝塔-php-mysql; 源码带手机版,dt内核,安全稳定,支持二次开发等 下…

响应式行业资讯网类网站织梦mip模板带数据完整无错版

织梦最新内核开发的模板,该模板属于比特币新闻资讯类、博客类企业都可使用, 这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容; 换成你的,颜色都可以修改,改完让你耳目…

响应式自适应推土机挖掘机机械类网站织梦模板

响应式自适应推土机挖掘机机械类网站织梦模板介绍 响应式自适应推土机挖掘机机械类网站织梦模板,此套dedecms模板可以作为推土机挖掘机机械类、大型机械重工类网站,比较简洁实用的网站模板,是做推土机挖掘机机械类、大型机械重工类网站朋友的…

织梦最新版后台一键更新网站、更新文档HTML、添加文档卡死500的解决方法

后台操作很卡,经常卡住,解决方法 1、/data/common.inc.php 里面如果是 localhost 的话,把它改成 127.0.0.1 2、把 /dede/templets/index_body.htm 25到41行,删除 3、检查 /include/common.inc.php 文件最下面的代码是不是这样的 …

我想创建自己的网站,买好服务器和域名后应该怎么做?应该怎么搭建服务器?怎么配置服务器?

最近双十一,阿里云服务器搞活动,心血来潮买了个服务器和域名。可自己完全不会,真是很痛苦的事情。。。各种百度,各种查,下面我来说说我的个人经历,希望对大家有所帮助。 我想创建自己的网站,买…

个人网站或APP遭遇到DDOS攻击怎么办?

之所以写这篇文章,是因为笔者网站遭到DDOS攻击,从遭遇到的那一刻直到最后恢复,心情复杂,感觉凉凉,真的有坐以待毙的感觉。 背景 首先说一下背景,笔者做了一个影视站,爱美剧tv,这个网…

【phpcms-v9】怎样给网站前台的个别页面更换新的模板?

[html] view plain copy print ? 1.第一步:将美工新设计的模板放置到phpcms/templates/default/模块目录名/模板文件名.html 如: phpcms/templates/default/content/category_new.html 如: phpcms/templates/default/content/category_download_new.h…