如何破解大型网站的登录

article/2025/9/28 21:24:36

阅读本文需要4.66分钟

你被标题吸引了吧。。。别急着关。。重头戏在后面

最近当我玩B站的时候,一不小心用代码登录了它,并几乎无限制的上传视频。

那么接下来,我来讲解如何通过Hack技术来模拟 哔哩哔哩 的登录,并完成我们的视频上传等操作。因此内容中略有“暴力”,若您感到不适,那还是也请看完它。

按照以往的老套路,我们首先需要弄清楚它的登录逻辑,并通过我们的代码来实现登录操作,其次拿到所谓的 Cookie 或者 Token、Sign等校验字段来做其他的操作,以下将围绕 B站 一步步来讲解破解的思路:

首先我们访问到 哔哩哔哩 的登录页面:


当我们在未登录的状态下访问登录页面的时候,会发现验证码已经显示出来了。那么他们是怎么做到当我输入账号、密码并输入一个已经出来的验证码之后就能校验成功呢。这时候就得提前动动脑子,当然如果你是开发服务器的话,应该明白里面的道理。这里我简单的讲下,其实在访问这个登录页面的时候,B站 已经将一个唯一的标识和验证码绑定起来了(也就是后面说到的Cookie),并且在登录的时候将这个标识一并发送上去。也就是说:通过一个标识来绑定验证码和登录操作。

那么接下来我们看看在第一次访问登录页面的时候,都有哪些可用的数据,打开 Charles 抓包工具(Charles抓包工具可在历史文章中找到),重新访问登录页面.

这是登录页面的Request数据:



当然一眼看上去并没有什么可用数据。其实确实是没什么卵用的数据.那么我们来看看Response数据:



一眼看上去是挺乱的。细看下它的Raw数据。其中包括了使用的Server、Set-Cookie等等的数据,还有登录页面的html文本. 那么其中最重要的数据也就是 Set-Cookie,这个Set-Cookie中的数据就是之前讲到的 用来和验证码绑定的唯一标示。那么我们来确认下,来看看验证码图片的包:



快看,快看 验证码 Request 中的 Cookie,果然是上面登录页面的 Response 的 Set-Cookie。

那么验证码就简单了,我们通过代码来访问 B站 的登录页面,并拿到Response的Set-Cookie,然后再将这个Set-Cookie放到下载验证码Request的Cookie中,就这样,我们的验证码搞定了,那是不是登录就很简单了,少年憋急。登录才是大头..

来来来,基于上面的登录页面,我们在里面输入自己的账号,并完成登录来看看发的包都有哪些.

登录操作之后的Request:



可以看出来这是一个 post 请求,当然 Cookie 和验证码的一样将之前保存下来的 Set-Cookie 传给Request的Cookie.

post 参数如下:



Orz,WTF,提交的密码加密了。那么我就需要来找一下它的加密算法了。其实网页端的加密并没有什么卵用。对我来说,就是随便翻翻代码的事(毕竟我很帅)。

来来来,找啊找啊找加密。然后我们先试探性的搜索下请求的字段 'pwd' 如下图:



果然定位到了加密的位置,当然前端页面的加密大部分都是很容易找到的,只要你有耐心.



以上就是 B站 加密密码的算法。简单讲下就是:通过 /login?act=getkey 拿到一个数据(hash,key),并以key作为RSA算法的公钥来加密 (hash+明文密码),然后针对这个数据来一次base64即可

python实现如下:

import rsa
pub = rsa.PublicKey.load_pkcs1_openssl_pem(_key)
_pwd = rsa.encrypt((_hash + psw).encode(),pub)
_real_pwd = base64.b64encode(str(_pwd))

那么现在我们就需要把问题聚焦到 /login?act=getkey 这个接口上。那么我们再回到之前的抓包数据上,会发现果然有一个 getkey 的请求:



同上,Cookie是最开始的Set-Cookie。



Response中也就同时拿到了我们需要的 hash 和 key.大功告成,所有请求和加密都被我们搞定。

这时候我们再思考下登录脚本应该怎么判断是否登录成功呢,回头过来看下之前的登录操作的结果 也就是 上面的 dologin 接口.



会发现如果你成功登录之后,在 dologin 接口上会有 302 重定向跳转,并最终跳转到 主页上。因此这时候我们就可以来写代码,模拟登录,并且在最后一步登录请求中判断当前请求历史的第一个状态码是不是 302 ,如果是302,说明我们的登录脚本是没问题的。同时,再拿到 dologin的Response中的Set-Cookie作为新的Cookie,因为这个Cookie才是真正验证通过的Cookie,当然它是存在有效期的。具体多少我还不清楚,一般有一个礼拜、一个月、甚至一年之久。之后我们用这个Cookie去做其他有意义的事情,是完全没问题的。

其次就是上传视频接口,也是类似的方法,需要分析上传视频的接口数据。并将最终的Cookie携带到请求包中。其中需要注意的是B站的上传视频可简单的分为以下几个步骤:

  1. 将视频以Chunk的方式,而且是options的请求方式上传到服务器。因此它是支持断点续传的。
  2. 拿到options请求之后的视频id,再请求 add 接口将数据post上去即可

总结

之所以写这篇文章,其实重点不是怎么去破解B站的登录,而是这些破解的逻辑是否可以提供给我们一些服务器架构的思路,抑或防范别人的破解。


http://chatgpt.dhexx.cn/article/nJCUdmxk.shtml

相关文章

网络安全攻防之网站后台帐号密码暴力破解解析

前言 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主要从…

网站加密密码查看(或者破解)

从源代码中查看到的加密算法(MD5 单次加密) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190705112059582.png public static string MD5(this string str) { if (string.IsNullOrEmpty(str)) { return string.Empty; } MD5CryptoServiceProvi…

网站管理后台帐号密码暴力破解方法

【导读】 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主…

万能网站密码爆破测试工具,太强了 !

内容来源:https://github.com/whwlsfb/BurpCrypto BurpCrypto是一款支持多种加密算法、或直接执行浏览器JS代码的BurpSuit插件。 一、编译 mvn package 二、为什么解决了痛点 目前越来越多的网站系统在登录接口、数据请求接口中加入各式各样的加密算法&#xff…

一个简单的Python暴力破解网站登录密码脚本

目录: 关键代码解释完整代码方法一运行结果 方法二运行结果 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url "http://192.168.171.2/dvwa/vulnerabilities/brute/"header设置请求头 header {Us…

【谨慎学习】手把手教你破解网站管理后台帐号密码

【导读】 对于网站运行的个人站长而言,最担心的是应如何有效且安全的去管理自己的网站,否则自己辛辛苦苦经营的网站就会被不请自来的不速之客给攻破,轻则站点数据被窃取,重则整个网站都被攻陷,导致无法恢复。 本文主…

如何破解网络密码?(2种方法)

方法1:直接找网络的主人问(没有技术含量,不要脸的话就去问吧) 如果别人不告诉你怎么办? 两种解决方法: (1)叫你孩子去问,让他(她)撒撒娇~ &am…

黑客入门破解网络密码常用九个方法

个人网络密码安全是整个网络安全的一个重要环节,如果个人密码遭到黑客破解,将引起非常严重的后果。比如,银行卡账户密码被盗,你就给别人打工了。所以,增强网民的网络安全意识是网络普及进程的一个重要环节。 常言道&a…

Burp Suite暴力破解网站密码

一、准备: 1,靶场:个人选择DVWA。 2,工具:Burp Suite。 3,密码字典。二、开搞!: 注:任何未经授权的渗透测试皆为违法,本文仅供学习,维护网络安全…

Oracle数据误删恢复

Oracle数据误删恢复 欢迎关注微信公众号: 程序员小圈圈 转载请标明出处^_^ 原文首发于: www.zhangruibin.com 本文出自于: RebornChang的博客 对于删除数据,我们大致可以分为两种。 ①一种是在控制台执行的sql进行数据删除。 ②一…

SOLARIS系统下ORACLE数据恢复案例

服务器数据恢复环境: 两台SPARC SOLARIS操作系统服务器通过光纤交换机共享一台存储作为集群使用。平时是一台服务器(以下称为主服务器)在运行,如果该服务器发生故障宕机,只需要将这台服务器关机后开启另外一台服务器&a…

Oracle数据恢复

1、查询Oracle日志表 select * from v$sql ; select * FROM v$sqlarea ; 2、查询表的最新操作,找到被删除的数据 select * from v$sql where sql_text like %ABNORMAL_ORDERS% ORDER BY FIRST_LOAD_TIME desc; 找到操作的时间 FIRST_LOAD_TIME,SQ…

【服务器数据恢复】EXT3文件系统下Oracle数据库数据恢复案例

服务器数据恢复环境: 华为OceanStor某型号存储,十几块FC硬盘组建一组RAID5磁盘阵列,配备了一块热备盘;上层使用EXT3文件系统,配置了oracle数据库。 服务器故障: 该存储RAID5中的一块硬盘未知原因离线&…

Oracle-Oracle数据库备份与恢复

Oracle数据库备份与恢复 下面通过一些简单的例子来了解一下: Oracle数据库各种物理备份的方法。Oracle数据库各种物理恢复的方法利用RMAN工具进行数据库的备份与恢复。数据的导出与导入操作。 (1)关闭BOOKSALES数据库,进行一次完全冷备份。 select file…

Oracle—数据恢复

文档结构 1、恢复原理1.1、recyclebin(回收站)相关操作 1.2、archived redo(归档日志)1.3、supplemental log(补充日志) 2、恢复场景2.1、定义删除2.2、记录删除2.2.1、undo恢复2.2.2、redo恢复2.2.3、dbms…

Oracle数据库数据丢失恢复的几种方法总结

根据oracle数据库的特点和提供的工具,主要方法有以下几种方法: 利用逻辑备份使用import工具丢失数据的表 利用物理备份来通过还原数据文件并进行不完全恢复 利用dbms_logmnr包从redo log文件中恢复 利用flashback特性恢复数据 前提 为了方便…

QSS美化

摘自:https://qtdebug.com/qtbook-qss/ Qt 提供的 widget 的默认外观很多时候都不符合项目的界面需求,必须要改,修改一个 widget 的外观(Look and Feel)有以下的方法: 继承 Widget,然后在 pain…

Qss换肤设置

前言:本文大部分的内容来源于同类博客。章节1.1-1.3 摘自参考文档:http://www.th7.cn/web/html-css/201405/37286.shtml。1.4摘自参考文档。https://blog.csdn.net/Staranywhere/article/details/106967756。本文仅用作知识点整理。 目录: 1…

qss之QRadioButton

先来个示例 QRadioButton {font-family: "Microsoft YaHei";font-size: 14px;color: #BDC8E2;background-color: #2E3648; }效果图如下: 上面的例子是基本的样式设置,下面我们将探讨 QRadioButton 各种样式设置: 字体样式 font…

QSS的使用

QSS官方文档:https://doc.qt.io/qt-5/stylesheet-reference.html 图标制作例子: normal hover press disable 图标制作 按钮设计指南 按钮多态的几种方法 一、程序应用qss文件 QString qssPath QString("%1/stylesheet/style.qss").arg(a.applicationD…