首页 > 其他分享 >【验证码逆向专栏】某片滑块、点选验证码逆向分析

【验证码逆向专栏】某片滑块、点选验证码逆向分析

时间:2022-12-25 11:00:42浏览次数:40  
标签:点选 逆向 滑块 验证码 接口 token 图片

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在公众号【K哥爬虫】联系作者立即删除!

逆向目标

  • 目标:某片的滑动验证码和点选验证码逆向
  • 主页:​​aHR0cHM6Ly93d3cueXVucGlhbi5jb20vcHJvZHVjdC9jYXB0Y2hh​

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_02

抓包分析

验证码图片获取接口,GET 请求,包含四个参数:​​cb​​​、​​i​​​、​​k​​​、​​captchaId​​​,有时候可能也会有 ​​token​​​ 参数,那是因为不是第一次加载图片,比如刷新图片,会将之前接口的 ​​token​​ 值带上。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_03

接口返回,如果是滑动验证码,则 ​​bg​​​ 是背景图,​​front​​​ 是滑块图,还有个 ​​token​​ 值后续会用到。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_04

如果是点选验证码,则 ​​captchaImage​​​ 是底图,​​wordsImage​​​ 是需要点击的文字,同样的有个 ​​token​​ 值后续会用到。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_05

验证接口,包含五个参数:​​cb​​​、​​i​​​、​​k​​​、​​token​​​、​​captchaId​​​,其中 ​​token​​ 就是获取验证码接口返回的。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_06

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_07

逆向分析

图片接口

先来看看获取验证码图片的接口,全局搜索关键字 ​​captchaId​​​ 即可定位到 key 为 ​​jsonpRequest​​​ 的地方,下图中的 ​​t​​ 就是完整的接口 URL 了:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_08

往上挨个找,先看看 ​​captchaId​​​,其实就是 ​​this.APP_ID​​​,多次刷新你会发现,对于滑块来讲,是定值 ​​974cd565f11545b6a5006d10dc324281​​​,对于点选来讲,是定值 ​​e1e7be036f9242c7aed023438af66f46​​,这两个值在一个 JS 里是写死的,如下图所示:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_09

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_10

再往上看,​​HOSTS​​​ 啥的是定值就不用说了,​​cb​​​ 就是 ​​r​​​,​​i​​​ 就是 ​​a.i​​​,​​k​​​ 就是 ​​a.k​​​,通过 ​​concat()​​​ 方法连接起来,所以只需要搞定 ​​r​​​ 和 ​​a​​ 的值就行了,如下图所示:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_11

​a​​​ 的值是通过 ​​encrypt(e)​​​ 得到的,​​e​​​ 里面有 ​​fp​​​、​​address​​​、​​yp_riddler_id​​ 等值,如下图所示:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_12

先看看这个 ​​encrypt​​​ 方法,最终返回的是 ​​i​​​ 和 ​​k​​​,瞧瞧这熟悉的 ​​iv​​​、​​parse​​​,一看就是 AES、DES 之类的,试一下就知道了,或者跟进 ​​lt.a.encrypt()​​​ 看看他的源码,对比一下标准算法里的源码,就可以发现是 AES,​​k​​ 就很明显了,RSA 加密,公钥啥的一搜就有。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_13

然后往上有个 ​​yp_riddler_id​​​,貌似是从 cookie 中拿的,直接搜索这个关键字,可以找到其设置值的地方,就是一个 UUID,其中有个 ​​window.performance.now()​​ 方法,其作用是返回一个当前页面执行的时间的时间戳,用来精确计算程序执行时间,在 node 实现方法如下:

var perf = require('perf_hooks');

performance = perf.performance.now()
console.log(performance);

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_14

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_15

然后再往上有个 ​​e.fp = this.fingerprint​​,这里用到的应该是一个指纹库:​​https://github.com/fingerprintjs/fingerprintjs​​ ,感兴趣的可以了解一下,同一个浏览器得到的指纹是一样的,这里固定即可。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_16

然后就是 ​​r​​​ 的值,​​preAdd​​ 方法,直接扣就行了

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_17

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_18

然后这个 ​​e​​​ 的值,再传到 ​​jsonpRequest​​ 之前就已经有一些值了,所以我们还得往前跟栈看看:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_19

来到 ​​getCaptcha​​​ 这里,没啥特别的,扣就完事儿了,其中有个 ​​browserInfo​​ 是浏览器的一些东西,copy 下来就行了。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_20

验证接口

验证接口最后也是走的 ​​jsonpRequest​​​,和前面的获取图片接口类似,不同之处就是传入的 ​​e​​ 里面包含的值不一样,先来看看滑块:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_21

包含 ​​distanceX​​​ 和 ​​points​​​,很明显 ​​points​​​ 就是轨迹了,再往前跟看看,如下图所示,我们只需要 ​​i​​​ 和 ​​r​​​ 参数就行了,参数是一些图片高宽,固定就行,​​offsetX​​ 是滑动的距离。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_22

主要看看这个轨迹 ​​i = this.reducePoints()​​​,跟进 ​​reducePoints()​​​ 方法里,​​this.position​​ 是轨迹信息,这个方法对轨迹做了一些处理再返回的,直接把逻辑扣下来即可。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_23

滑块就到这儿了,再来看看点选验证,同样的还是 ​​jsonpRequest​​​,传入的 ​​e​​ 包含了三个点的坐标。

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_24

同样往上跟栈,这里的 ​​this.position​​ 才是真实坐标,后面每个坐标分别对 x 和 y 与图片的宽和高进行相除,如下图所示:

【验证码逆向专栏】某片滑块、点选验证码逆向分析_验证码_25

结果验证

【验证码逆向专栏】某片滑块、点选验证码逆向分析_json_26

【验证码逆向专栏】某片滑块、点选验证码逆向分析_滑块_27

标签:点选,逆向,滑块,验证码,接口,token,图片
From: https://blog.51cto.com/u_15619200/5967979

相关文章

  • 秒懂“一键登录”与“短信验证码登录”的区别
    众所周知,新下载一个APP,首先需要做的事情就是注册和登录。目前,市场上主流的两种注册登录方式是“一键登录”与“短信验证码登录”,那么这两种方式有什么异同呢?早在几年前,用户......
  • 【验证码逆向专栏】某验三代滑块验证码逆向分析
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删......
  • 验证码
    importrandom#导入绘图库fromPILimportImageDraw#导入绘图字体库fromPILimportImageFont#导入图片库fromPILimportImage#导入io库importioimporttime......
  • Javaweb 登陆与验证码
    本次记录分角色登陆以及验证码的Servlet。1.登陆验证<html><%--CreatedbyIntelliJIDEA.User:jiachenglinDate:2022/11/11Time:14:31Tochangethis......
  • 机器学习————验证码图片识别
    (一)选题背景首先,验证码是最初的设定是通过验证码对人类和非人类行为进行区分;大多数的网站在进行注册或者登录时都需要用到图片验证码,这都是为了防止用户通过机器人......
  • 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-登录与图形验证码(capt
    书接上回,上一回我们按照“低耦合高内聚”的组织架构方针对项目的整体结构进行了优化,本回将会继续编写业务,那就是用户的登录逻辑,将之前用户管理模块中添加的用户账号进行账......
  • 基于 frida 实现的逆向工具包 hooker
     hooker逆向工作台:​​https://github.com/CreditTone/hooker​​hooker是一个基于frida实现的逆向工具包。为逆向开发人员提供统一化的脚本包管理方式、通杀脚本、自动......
  • JavaScript 逆向 ( 一 ) --- JavaScript 语法基础
    1、JavaScript基础菜鸟教程JavaScript教程:​​https://www.runoob.com/js/js-tutorial.html​​1.基础数据类型:number、string、boolean、null、undefined、object2.顺......
  • 验证码、MD5加密
    验证码生成验证码帮助类点击查看代码VerifyCodeServlet.javapackagecom.situ.web.servlet;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphic......
  • 【验证码逆向专栏】某片滑块、点选验证码逆向分析
    声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后......