吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20870|回复: 252
上一主题 下一主题
收起左侧

[Web逆向] 记一次有限制的网页pdf破解

    [复制链接]
跳转到指定楼层
楼主
涛之雨 发表于 2021-3-7 01:58 回帖奖励
本帖最后由 涛之雨 于 2021-3-7 14:56 编辑

作者:涛之雨

其他分会场(内容完全一样,随手多发一处。。。)
cnblogs : https://www.cnblogs.com/taozhiyu/p/14493476.html

记一次有限制的网页pdf破解

起因

(文件附在文末)

初步分析

首先用chrome浏览器打开,查看效果

点击确定,F12打开控制台(我怎么打不开)

那就ctrl+shift+I打开控制台(打开了)

那肯定是js搞的鬼,随手翻一下js就看到


(有什么用。。。可以有不下于5种方法绕过)

列举一下一瞬间想到的(欢迎补充)

  1. 最简单的就是本地js啊!直接打开编辑。。。
  2. 上述的ctrl+shift+I
  3. 菜单$\to$更多工具$\to$开发者工具
  4. ctrl+shift+C(这是快速打开UI布局分析工具,就是这个小按钮)
  5. fd自动转发(针对服务器返回的数据,保存到本地然后转发)
  6. 先打开控制台,再打开网页(斜眼笑)

大胆猜测一下,一个HTML30多M,说明数据都在本地,这个弹窗应该是服务器验证之类的

所以内容所占最多的部分就是PDF文件的主体。

使用010 Editor打开网页(因为我电脑问题。。。sublime打开直接就卡死了。。。汗-_-||),

向下随便翻翻,就找到一大堆的内容(如下图所示)


大致可以猜测为base64。

当然有没有加密啥的都不知道,只知道最后一步应该是base64。

然后向下看,有好几个script标签。


不得不说,这个作者还是挺有心的,下面三个eval的加密,上面一个号称耶稣也还原不了的加密。

唔,先不解密吧,(肯定这块就有猫腻了)

刷新一下页面,在弹窗的时候按下暂停键,(注:在source标签里)

点确定后就断下来了

稍作格式化,有alert出现

向上翻一下,找到else所在判断的另一个分支。。。这灵魂判断。。。

不管38妇女节(虽然还没到)

复制粘贴直接运行。(有点慢。。。)


这不就运行出来了么:




好了这就是主要的代码了,拿出来解密再重命名一下就是:

var DEFAULT_URL = '';
var pdfUrl = document.location.search.substring(1);
if (null == pdfUrl || '' == pdfUrl) {
    var BASE64_MARKER = ";base64,";
    var preFileId = '';
    var pdfAsDataUri = "data:application/pdf;base64," + PDFData;
    var pdfAsArray = convertDataURIToBinary(pdfAsDataUri);
    DEFAULT_URL = pdfAsArray;
    function convertDataURIToBinary(data) {
        var point = data.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
        var b64 = data.substring(point).replace(/[\n\r]/g, '');
        var raw = window.atob(b64);
        var rawlength = raw.length;
        var U8array = new Uint8Array(new ArrayBuffer(rawlength));
        for (i = 0; i < rawlength; i++) {
            U8array[i] = raw.charCodeAt(i) & 255;
        }
        return U8array;
    }
}

明显的的看到了,协议是application/pdf,编码是base64

尝试下载

base64解码后直接保存16进制不就好了,随手写了python解密保存

温馨提示,文件有点大,我是直接用010 Editor把前后都删掉,然后添加前后部分的

import base64
PDFData = "JVBERi0xLjYKJb/3***********这里是完整的base64,30多m,直接base64后放出来估计要被h大打死(暴筋)**********8mCjMyMzIxMjkwCiUlRU9GCg=="
with open('temp.pdf', 'wb') as f:
  f.write(base64.b64decode(PDFData))

先喝杯咖啡。。。等待时间有点长

打开。

还有密码。。。我大意了,没有密码!

找出密码

原网页中可以打开,肯定是有保存了密码的,向下翻一下

解密JS法

又是一段“最强”加密的js,很少,直接看都能看出来

密码是_0x4c77('0x2', 'V%DS')的结果,直接运行即可出结果

劫持事件法

上面有个输入密码以打开此 PDF 文件。下面有个确定,在确定按钮下断点。

点击下方的格式化按钮

在监听提醒的位置下断点(如果找不到在哪里了就切换到元素界面,再点一次)

刷新页面即可断下,鼠标放到value即可看到密码。

下载PLUS

至此解密完ch。。。啥?没有安装python?

既然他利用application/pdf协议生成的PDF,那我也可以直接用blob协议下载PDF,代码如下:

var bstr = atob(PDFData)//atob()方法将base64数据解码
var leng = bstr.length//获取文件长度
var u8arr = new Uint8Array(leng)//新建Uint8数组存放字节
while(leng--){
    u8arr[leng] =  bstr.charCodeAt(leng)//转Unicode编码
}
const blob = new Blob([u8arr], {type:'application/pdf'});//新建blob协议
const fileName = `jiemipdf.pdf`;//文件名
const link = document.createElement('a');//新建a链接标签
link.href = window.URL.createObjectURL(blob);//添加下载地址
link.download = fileName;//文件名
link.click();//模拟点击事件
window.URL.revokeObjectURL(link.href);//执行下载操作

复制粘贴到console里,(如果PDFData变量名变了记得重命名)

回车,弹出下载框!

(搞不懂为啥比python解码还快。。。)

至此结束。

如果不想要密码,可以到咱们吾爱随便搜索一下,找个去除密码的软件即可。

附录

内含:

  1. HTML原文件
  2. 本文PDF(不包含附录链接)
  3. 下载后的PDF

下载链接:https://taozhiyu.lanzouj.com/ind9nmmm3mb
密码:3xoq

压缩包解压密码:52pojie.cn

免费评分

参与人数 112威望 +1 吾爱币 +139 热心值 +92 收起 理由
仿佛_一念成佛 + 1 太牛皮了!!
cuxuan + 1 用心讨论,共获提升!
MapleNight2021 + 1 + 1 用心讨论,共获提升!
langjty + 1 用心讨论,共获提升!
Savitar301 + 1 我很赞同!
小冈伦 + 1 + 1 大佬牛逼,按照你的方法,成功把老师发过来的PDF给弄出来了
领悟者的涂鸦笔 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
金城侠客 + 1 + 1 用心讨论,共获提升!
Dianaive + 1 + 1 热心回复!
lin8888 + 1 我很赞同!
qyhnet + 1 我很赞同!
wb0226 + 1 + 1 谢谢@Thanks!
the_black + 1 + 1 http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=4AAEC485027C2CA13F7A
冥界3大法王 + 4 + 1 楼主又成精了。。。
szjzxm4321 + 1 + 1 热心回复!
小白2号 + 1 谢谢@Thanks!
大口吃土 + 1 + 1 热心回复!
alien11 + 1 + 1 谢谢@Thanks!
lj800827 + 1 + 1 胡萝卜啊哈哈
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
duzi666 + 1 高手 厉害了 学习了!
wang145696 + 1 + 1 高手 学习了
一牛神一 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
zhuzhuq + 1 + 1 谢谢@Thanks!
啊惠123 + 1 + 1 我很赞同!
blue84818971 + 1 + 1 谢谢@Thanks!
jiqinglin + 1 + 1 用心讨论,共获提升!
RE1AX + 1 + 1 谢谢@Thanks!
JusticeTian + 1 + 1 用心讨论,共获提升!
xiaoxuanfeng + 1 + 1 用心讨论,共获提升!
数论基础 + 1 + 1 谢谢@Thanks!
Veagau + 1 + 1 我很赞同!
Kristin_ + 1 我很赞同!
Web_ + 1 谢谢@Thanks!
正己 + 3 + 1 热心回复!
it_harry + 1 + 1 谢谢@Thanks!
溜玩音乐 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
NGUlyb + 1 我很赞同!
删除过去 + 1 + 1 涉及到很多前端知识,真的很厉害。
Focus丶孒涵 + 1 + 1 我很赞同!
美丽的渗透者 + 1 + 1 我很赞同!
xxx2017 + 1 + 1 大老多出这种网页pdf的破解案例,看书人超实用!
苦小瓜 + 1 用心讨论,共获提升!
第十三 + 1 我很赞同!
勇闯天涯的雪糕 + 1 + 1 谢谢@Thanks!
ZhouJX1999 + 1 用心讨论,共获提升!
_达圣 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
大粪男神 + 1 鼓励转贴优秀软件安全工具和文档!
sjminh + 1 + 1 讲述很清楚,学习了
sifeng + 1 + 1 用心讨论,共获提升!
Hu2545Hu + 1 热心回复!
aniu + 3 + 1 谢谢@Thanks!
sisws + 1 + 1 我很赞同!向高手学习
天空法则 + 1 + 1 我很赞同!
asdf1233124 + 1 + 1 谢谢@Thanks!
66099 + 1 用心讨论,共获提升!
wenpenpen + 1 + 1 热心回复!
leo_kan + 1 + 1 我很赞同!
spcspcspcspcspc + 1 + 1 用心讨论,共获提升!
oxxo119 + 1 + 1 谢谢@Thanks!
小温233 + 1 热心回复!
凉意人 + 1 + 1 用心讨论,共获提升!
_小白 + 1 + 1 我很赞同!
silence2540 + 1 + 1 我很赞同!
airabout + 1 + 1 用心讨论,共获提升!
kyrzy0416 + 1 + 1 谢谢@Thanks!
zpzwz + 1 + 1 用心讨论,共获提升!
lamnotme + 1 + 1 我很赞同!
moogong + 1 + 1 厉害啊
zqguang3708 + 2 + 1 热心回复!
52pojie666z + 1 + 1 热心回复!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
halfly + 1 用心讨论,共获提升!
新手12138 + 1 我很赞同!
Void1024 + 1 + 1 谢谢@Thanks!
AndrewFly + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fanvalen + 1 + 1 我很赞同!
ShonStewart + 1 + 1 我很赞同!
hayden7 + 1 + 1 用心讨论,共获提升!
ligxi + 1 + 1 用心讨论,共获提升!
ogli324 + 1 + 1 谢谢@Thanks!
iamhk + 1 + 1 谢谢@Thanks!
xdxf2000 + 1 + 1 用心讨论,共获提升!
ofo + 1 我很赞同!
rzhxw + 1 热心回复!
pwp + 1 + 1 语言风趣幽默,深受学生好评。
sycamoretong + 1 + 1 谢谢@Thanks!
siduo + 1 用心讨论,共获提升!
挑灯看花 + 1 + 1 我很赞同!
chinasmu + 2 + 1 666啊老铁,请问js解密如何学习啊
superlaomao + 2 + 1 谢谢@Thanks!
雫Hao洋洋 + 1 + 1 热心回复!
liu101816 + 1 热心回复!
myyuri25 + 1 + 1 谢谢@Thanks!
ymhld + 1 + 1 用心讨论,共获提升!
奕余君 + 1 + 1 谢谢@Thanks!
Ryan袁奥 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
taczer + 1 + 1 我很赞同!
UPC + 1 + 1 用心讨论,共获提升!
nullable + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
Yancy-Lan 发表于 2021-3-7 02:17
会爬虫是真的强!我现在在学习中,,,期待你有更多的实践交流分享!辛苦了
推荐
 楼主| 涛之雨 发表于 2021-5-18 19:36 |楼主
the_black 发表于 2021-5-18 17:02
大佬您好,我查看了你的“记一次有限制的网页pdf破解”文章,无奈自己是小白,不会技术,希望您能研究研究 ...

F12打开控制台,输入PDFViewerApplication.save()即可下载

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
the_black + 1 + 1 谢谢@Thanks!

查看全部评分

推荐
想你的月 发表于 2021-3-7 02:25
推荐
 楼主| 涛之雨 发表于 2021-8-6 20:46 |楼主
金城侠客 发表于 2021-8-6 20:44
大侠,您好,还是无法下载啊,请问是这么回事,谢谢

具体情况具体分析。。。你这直接报个错谁知道什么情况
推荐
 楼主| 涛之雨 发表于 2021-3-7 10:14 |楼主
我是不会改名的 发表于 2021-3-7 09:28
有服务器咋办呢,https://ws28.cn/f/4vkmubbrnag
以前有阅读器,后面出版社把服务器关了,有账号也登不 ...

那没办法了,实在不行就爆破吧。一般来说密码都是大小写数字和特殊字符
(或是没有特殊字符,密码特别长)
爆破尝试一下?
像抑郁云阅读本地缓存就是文件名加盐MD5
经济学人的客户端也是差不多
客户端可以发一下?说不定算法是本地的呢(心存侥幸)
推荐
 楼主| 涛之雨 发表于 2021-3-7 02:06 |楼主
本帖最后由 涛之雨 于 2021-3-7 02:10 编辑

好久没发帖了,
自古楼主坐沙发
PS:该网页用的是开源的PDFjs(http://mozilla.github.io/pdf.js/

免费评分

参与人数 1吾爱币 +1 收起 理由
xiaochenchen + 1 热心回复!

查看全部评分

推荐
liu6tot 发表于 2021-9-10 00:12
代码中PDF=“*****”过长,会造成像pycharm等IDE 卡死, 这代码有点不能忍。
[Python] 纯文本查看 复制代码
import base64
with open("input.txt", "r") as f:
    PDFData = f.read().encode("ascii")
with open('temp.pdf', 'wb') as f:
  f.write(base64.b64decode(PDFData))

点评

推荐还是用js直接读取blob数据,然后输出pdf,因为在内存里已经有了。IDE卡死因为文件太大 然后他会去尝试高亮显示  详情 回复 发表于 2021-9-10 07:00
推荐
liu6tot 发表于 2021-9-11 00:25
本帖最后由 liu6tot 于 2021-9-11 00:26 编辑

js代码配个quicker的"剪库"动作脚本,还要什么自行车?谢谢斑竹的好思路,一大波书库向我走来
.
4#
winddyj 发表于 2021-3-7 02:19
思路清晰,分析到位,过程写的尤为生动,赞一个
6#
xzhlife 发表于 2021-3-7 02:40
学习一下,感觉挺难的
7#
PrincessSnow 发表于 2021-3-7 02:45
谢谢大佬的思路跟方法学习中
8#
quhus 发表于 2021-3-7 03:23
大佬的思路跟方法学习,很有理念,慢慢思考中。
9#
tyy2020 发表于 2021-3-7 05:13
看不懂,但过程耐心看完了。
10#
whc2001 发表于 2021-3-7 06:38
学习了,开发者工具竟然还有这么多玩法
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 19:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表