首页 > 其他分享 >【攻防技术系列+逆向篇】--WebJs①

【攻防技术系列+逆向篇】--WebJs①

时间:2024-04-05 17:57:21浏览次数:27  
标签:攻防 浏览器 混淆 -- 逆向 验证码 WebJs 细嗦 数据

WebJs REVERSE

全文用时:15min

爬虫逆向入门首先碰到大概率就是WebJs逆向,之后应该才会碰到安卓逆向,所以就先从WebJs说起

能看这篇的,相信都清楚技术分前端后端,而爬虫所谓的逆向就是对前端搞一些事情。毕竟后端是勘知不到的(其实也不是不能,部分不完善安全的后端代码接口或者数据是通过一些小手段试一试的,这里不做介绍,以后专门列一篇大概介绍下有哪些技巧,ps:这个操作可能违法,谨慎操作)。

开始重点说前端,也就是web页面,web页面的组成这里不做介绍(以后我会更一篇到前端app开发模块中,感兴趣的家人到时候可以看一看)。对于和后端分家的前端,我们搞爬虫的做逆向首先要有一个自信,那就是,只要是前端眼睛看到的就没有拿不到的数据,如果拿不到,那就是打游戏的时候,笔者经常被嘲讽的“菜,请多练”。

不废话了~

笔者结合自己的理解说说做WebJS逆向都需要掌握那些知识。溯本求源,反爬开发们为了保证数据的安全性,被篡改等等原因。当我们看到返回的web界面数据时,整体完成了两步,第一步:请求数据(获得数据前);第二步:渲染数据(返回数据后);那么webJS逆向无非就是这两步上做操作,下面就拆分对这两步进行细嗦:

01
——
第一步请求数据

一般请求数据时,接口前后端进行了例如:动态Cookie,身份认证,签名sign,链接验证token,或者就是前置验证码验证等等机制。先说验证参数数据的生成来有那些方式,一般来源有两个,第一:要么前端JS生成(有根据参数生成,也有根据用户行为生成,以后篇章细嗦);第二:要么是后端前置步骤response中带回来的;(画图水平有限)。

如何判断是前置后端返回数据带回来的还是前端js生成的,后面笔者会开单一篇专门讲混淆以及关键参数定位与判断来源中详细细嗦各种情况与技巧,这篇只讲整体 。

关于验证码反爬,这里首先我们要有一个意识,验证码这东西是反人性的,是影响用户体验的,所以不可能出现的频繁,如果你发现你的验证码出现频繁,那么一定就是那么被检测怀疑了(例如参数不全,ip检测,请求频率检测等等)。当然,出现了验证码我们需要去解决。

根据验证码的不同情况,这里有太多玩法,例如验证码验证结果是否进行了前后端交互的特性有不同的处理方式,如果不交互,我们可以替换检测部分Js或者hook修改判断函数结果等等,具体情况具体而定。与后端数据交互的验证码,又分为是否单独接口交互,还是请求中加密携带,不同的交互不同的处理方式等等。这部分之后笔者也会单独开几篇去讲不同验证码如何去处理(不会有正经爬虫还接打码平台吧)。

02
——
第二步返回数据需要逆向

返回数据不是明文的情况,往往后端给我们返回的数据有可能是乱七八糟字符串或者对传输的数据序列化了,如protobuf等等。这个时候就需要逆向解密数据,而解密无非就是反爬自写的解密(笔者经验看来,当前很少很少见过解密自写的,请求参数加密自写的相对比较多);情况更多的就是第二种,使用的常见加解密方法(base64,md5,RSA,AES,SHA1,SHA256,HMAC等等),加解密部分也会单独开一篇细嗦如何判断是什么加密,以及加密算法之间的区别与如何调用,这里不细嗦了。

现在我们知道了从哪里入手了,那么web常见的逆向详细手段有那些?

笔者总结常用逆向手段就三种:

根据源码规则重写加解密还原加密代码(这个方式适合为混淆或者混淆不严重能理清楚规则逻辑的逆向情况,此为上策)

混淆严重,无法重写加密解密规则。那么就是扣代码(直接找到加解密部分的js文件或者函数代码段),直接调用运行对应js获取结果,这里存在补环境(有的js代码只能在浏览器中执行,哪怕是node Js也是V8引擎,依旧存在部分js可能无法执行),毕竟node没有渲染界面, 那么浏览器中存在的window,dom,navigator等对象是没有的。所以这一步学会补环境是必备技能,以后单开细嗦。此为中策。

RPC远程调用。这是笔者认为的万金油玩法(结合内存漫游+RPC远程调用)。好处是不关心怎么加密,不关心环境是否齐全,缺点也很明显(效率低,成本大,不适合大量数据采集),想非常大量采集就必须以量取胜,比如机架方式,几十台手机或者浏览器去生成所需参数,此为下策。

综合以上三种,笔者喜欢第二种,从采集效率与逆向方便程度来讲都是不错的。

逆向还需要掌握那些?
01、浏览器基本组成

笔者知道的爬虫工作者有好几年的人对这部分依旧不熟悉的,之后会开一篇细嗦,毕竟webJS逆向真的经常打交道。
02、常用调试工具掌握
(WT-JS,鬼鬼JS调试等等),浏览器插件,以及笔者最最常用的浏览器控制台介绍使用,这个使用太频繁了,这部分会开一篇大致嗦嗦,以及提供工具下载链接。(以防后面上图时候,有兄弟学习复现的时候不知道点的哪里或者找不到工具)。
03、模拟浏览器的使用
模拟浏览器(有时候用来获取一些不常变动的参数真的很方便)以及浏览器环境检测(这里不知道需要不需要开一篇单细嗦,感觉都会,如果需要的话宝儿们留言以后我开一篇放到爬虫入门模块中~)到学些生活当中。
04、常见反调试如何解决

常见反调试有哪些?怎么解决?例如无线debugger,打不开控制台,内存爆破,或者禁止调试输出等等。分别都是什么情况,怎么去解决这些反调试手段。(单开篇细嗦)
05、关于混淆与反混淆
如今js压缩混淆是基本操作,如常见压缩混淆:webpack,eval混淆,ob混淆,lsb隐写,sojson加密,ollvm混淆,aa,jj等等,这些怎么判断,如何去反混淆。(单开篇细嗦)。
06、常用抓包工具安装使用以及js语法
这两块知识点逆向模块中不说算基础,逆向中不打算细嗦,之后会写一篇介绍到爬虫入门中,有需要的或者感兴趣的到时候可以看看。
ps:特别是JS语法请熟练掌握




最后针对,不同部分webJs逆向。笔者也会写一些详细实例,放在实例中,方便入门实践操作,毕竟不上手实操永远不会“hello 逆向”。涉及的工具,笔者也会提供百度云链接,写的时候暂时能想到就这些了,之后想到还有什么再补充吧。

原创:ALostDog 一条走丢的狗

标签:攻防,浏览器,混淆,--,逆向,验证码,WebJs,细嗦,数据
From: https://www.cnblogs.com/o-O-oO/p/18115990

相关文章

  • Apple iWork (Pages、Numbers、Keynote) 14.0 - 文档、电子表格、演示文稿
    AppleiWork(Pages、Numbers、Keynote)14.0-文档、电子表格、演示文稿请访问原文链接:AppleiWork(Pages、Numbers、Keynote)14.0-文档、电子表格、演示文稿,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org苹果今天将其专为iOS和macOS设备设计的iWork应......
  • cdn.jsdelivr.net 挂了?前端静态资源访问出错
    目前jsdelivr被墙了,即被屏蔽,这导致国内大陆地区无法访问。很多插件、开源项目用到了jsdelivr,解决方法的核心思想就是换一个服务商,换一个cdn服务提供商。 解决方法:①将所有cdn.jsdelivr.net更换为fastly.jsdelivr.net实例:xxxx://cdn.jsdelivr.net/npm/xxxx/src/assets/imag......
  • Vue2和3中的插槽区别及其简单案例
    vue中的插槽是什么,官方解释是:Vue实现了一套内容分发的API,这套API的设计灵感源自WebComponents规范草案,将<slot>元素作为承载分发内容的出口......vue2插槽和vue3插槽基本概念是一致的,也是匿名插槽、具名插槽、作用域插槽三种,只是基础语法有一些区别。下面让我们温习......
  • 基于深度学习的活体人脸检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
    摘要:本文深入研究了基于YOLOv8/v7/v6/v5等深度学习模型的活体人脸检测系统,核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法,进行性能指标对比;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码,及基于Streamlit的交互式Web应用界面设计。在Web网页中可以支持图像......
  • 第3章 Internel 控制消息协议(ICMP)
    目录第3章Internel控制消息协议(ICMP)1.ICMPv4简述2.ICMPv4初始化2.1ICMPv4收包处理函数初始化2.2ICMPv4内核模块初始化3.附录第3章Internel控制消息协议(ICMP)1.ICMPv4简述有的教材认为ICMP是第三层协议(网络层),有的认为是第四层协议(传输控制层),我更倾向于它是......
  • MySQL 主从复制
    概述在主从复制中,一般有一个主数据库(Master)和一个或多个从数据库(Slave),主数据库负责接收和处理写操作,从数据库复制主数据库的日志文件,将写操作在自身的数据库重演,从而实现数据的同步复制类型STATEMENT:把主数据库执行的sql复制到从数据库,是默认类型ROW:直接把数据行复制过去......
  • 【安全技术系列】安全态势感知系统:用户+实体画像
    在网络安全态势感知系统中,用户和实体画像是关键组成部分,用于分析和监测网络中的用户和实体活动,以便检测潜在的安全威胁和进行有效的安全防护。以下是网络安全态势感知系统中的用户和实体画像的一些关键方面:1、用户画像(UserProfile):用户身份和权限:用户画像包括用户的身份信息......
  • 在Blender中,重新调整已经绑定权重的骨骼位置而不影响绑定的顶点位置
    在Blender中,重新调整已经绑定权重的骨骼位置而不影响绑定的顶点位置,是一个比较特殊的需求。这通常涉及到调整骨骼的“RestPose”(休息姿势),而不是它的“PosePosition”(姿势位置),以保持顶点相对于骨骼的位置不变。下面是详细的步骤和一些建议,以达到这个目的:1. 准备工作确保你的......
  • [Rudolf and Subway]
    RudolfandSubway题目大意给定一个\(n\)个点,\(m\)条边的无向图,第\(i\)条边表示\(x,y\)是\(z\)号线的相邻站点,问\(s\)到\(t\)最少需要换乘多少次做法用分层图,对于任意一条线路,让他们单独分为一层,如果一个点既在\(1\)号线又在\(2\)号线,那么它应该处于两个图层中,举个例子441......
  • C#–特性详解
    一、特性是什么1、特性定义特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([])来描述的。特性(Attribute)用于添加元数......