- 博客(101)
- 收藏
- 关注
原创 js逆向——webpack实战案例(一)
首先通过跟栈的方法找到加密位置我们跟进u函数,发现是通过webpack加载的向上寻找u的加载位置,然后打上断点,刷新网页,让程序断在加载函数的位置u = r.n(a)
2024-09-28 20:10:26
1514
5
原创 js逆向——异步栈分析(上)
这里的异步是一个while循环,不断取出一些回调函数来执行,对于then前面的e.shift表示执行成功的情况,而后面的e.shift表示执行失败的情况,而e是一个数组,用于存放很多异步的回调函数,shift相当于栈里面的pop,用于从异步栈当中取出,执行,并删除栈顶的回调函数。的位置在文件chunk-vendors.a1bfb9a0.js:formatted的第668行,然后先取消断点,等时机到了再打上!前三个函数很有可能是封装的发包函数,直接跟异步的栈。将所有断点移除,然后在异步栈里面下断。
2024-08-29 22:40:26
672
1
原创 js逆向——2024最新金山词霸(练习二)
注:当看到加密函数传入字符串的时候,一定要先用123456测试一下,不要上来就扎入细节当中。然后就是解密数据了,过程相对简单,就是应该普通的AES-ECB解密。就是跟栈的时候注意看一下url对不对,别跟错接口了😂😂。经过分析sign的生成,是先经过md5然后AES加密生成。整个加密参数的生成流程我们都清除了,下面就是扣代码环节了。ok,今天的你就到此为止吧,明天还要接着狼🐺啊!简单看一下加密参数,就sign是比较可疑的。经过测试,也拿到正确的响应数据,并成功解密。对于XHR请求的包,直接跟栈就对了!
2024-08-12 17:41:01
521
原创 js逆向——2024最新有道翻译(练习一)
注意:这种一般是请求参数出现错误,先检查get/post是否正确,然后就是post的请求参数一定是缺一不可!这个和请求头略有不同!往上跟栈到这里看不到表单数据了,就在附近找参数e,t如何被加工的即可,于是找到了k(t)函数,或者上下翻翻看也会有意外之喜哦~首先看请求头,重放测试有没有cookie反爬(重放的时候注意松开断点,不然可能返回数据为0B)很明显返回的数据被加密了,根据之前的经验,返回的大概率是json格式的数据。我们搜索sign值,发现并没有匹配到接口,说明是动态生成的加密参数。
2024-08-12 13:13:24
1263
原创 js逆向——返回加密数据的处理
这样数据解密的步骤我们已经分析完了,现在还有一个问题就是我怎么知道返回的7个XHR数据包哪一个是列表页展示的、我们希望得到的目标数据呢?这说明我们收到的响应数据是加密后的结果,返回客户端之后由客户端解密拿到明文字符串展示在前端当中,所以我们才能在网页看到有效的信息。现在我们还需要确认一件事,就是这个网站使用的AES-CBC是不是标准的AES算法,这将决定我们需不需要扣代码。而且通过观察,js代码没有特别需要扣的地方,都是使用的库当中自带函数。ok,今天的你就到此为止吧,我们下期再见~
2024-07-28 22:35:38
2240
原创 js逆向——origin/refer请求头反爬
但是如果将origin和refer同时注释就会报错403,说明这里是一个检测点,服务端需要判断客户端是不是点击链接进来的,如果直接请求会失败。我们注释掉x-api-key返回了403,这个参数是必不可少的,而且有可能是动态生成用于检测爬虫的。使用正则表达式提取出来静态参数x-api-key的值,为二次请求真正的摘要做准备。保留有用的参数(当然都保留也行,我们主要是想看一下哪些参数会对爬虫进行检查)排除掉在请求头当中的目标之后,我们顺利找到静态参数在文件当中的位置。
2024-07-25 10:33:11
920
原创 js逆向——url重定向处理
结果报错$未定义,这是因为我们本地缺少浏览器的环境,我们去浏览器找$(this).attr('target');发现是写死的一个字符串:var ee = $(this).attr('target');ee=‘_blank’因此我们需要监听点击a标签之后发生了什么(执行了哪些动作),以此来判断究竟访问的是哪个网页。反正扣js代码就是缺啥补啥即可,不知道是什么情况就去浏览器调试观察一下就ok了。ok,下面是最后一步,使用pycharm调用js代码即可大功告成了。结果返回的是403,访问出错,被禁止了。
2024-07-19 14:00:50
741
原创 X科网js逆向分析
所以我们可以直接对pwd使用md5加密(省事)/ 把网页中的md5函数代码抠出来。显然这是函数内实现的函数,也就是闭包,所以我们只需要把闭包的整个函数拿下来即可。然后我们可以测试一下md5(1)发现得到的是正确的结果c4ca4.......我们将闭包代码复制到js调试工具当中,发现调试工具已经自动识别出来md5了。通过$.md5(pwd)之后得到的加密结果就是我们的pwd参数。得到c4ca4,说明就是$.md5(),md5加密。1)测试使用$.md5(1)加密数字1。2)测试$.md5(pwd)
2024-06-30 23:40:29
436
原创 某山词霸翻译js逆向分析
当发起一次Post请求,若未指定Content-type,则默认content-type为application/x-www-form-urlencoded,即参数会以FormData的形式进行传递,不会显示出现在请求URL中。当发起一次post请求,若Content-Type为application/json,则参数会以Request Payload的形式进行传递(数据格式为json),不会显示出现在请求url中。我们发现只有参数sign是动态生成的,需要特殊处理,根据经验sign是通过加密生成。
2024-06-28 17:50:47
1070
原创 token、session、cookie、sign分析
接口在网络传输过程中如果被黑客挟持,并修改其中的参数值,然后再继续调用接口,虽然参数的值被修改了,但是因为黑客不知道sign是如何计算出来的,不知道sign都有哪些值构成,不知道以怎样的顺序拼接在一起的,最重要的是不知道签名字符串中的key是什么,所以黑客可以篡改参数的值,但没法修改sign的值,当服务器调用接口前会按照sign的规则重新计算出sign的值然后和接口传递的sign参数的值做比较,如果相等表示参数值没有被篡改,如果不等,表示参数被非法篡改了,就不执行接口了。
2024-06-28 16:45:47
543
原创 微x公众平台js逆向分析
这一行调用的一个函数,返回pwd有点可疑哦,我怀疑你这个函数就是加密函数,不妨打个断点(多打几个断点也没关系,只要能断下来就是胜利)可以排除.css,去.js文件里面查找加密函数的位置,因为相关的加密算法一般都是由.js完成的。一般情况下,调试的时候遇到自定义变量缺失,直接在前面补充:var g = {}即可(空字典)加密后的密码为32位,怀疑是MD5(16/32位)g不是js中内置的对象/变量而是一个自定义的变量。但是如何函数是匿名的,如何执行呢?先点击格式化,然后点击加载代码。
2024-06-26 09:27:32
380
原创 常见加密方式:MD5、DES/AES、RSA、Base64
3、公钥和密文对于黑客来说都没有意义,密文到达服务端,服务器使用私钥解密密文,拿到对称密钥。2、客户端向服务端请求公钥,并使用公钥对明文加密,明文当中放置有客户端生成的对称密钥。二者的结合既利用了对称加密代价小的优点,又使用非对称加密避免了密钥分发的问题。使用RSA建立一个安全的连接,然后接收方拿到对称密钥之后用于实际的加密解密。16/32位的数据,最有可能就是使用md5加密的。4、双方使用开销较小的对称密钥进行加密解密操作。使用对称加密的时候,双方使用相同的私钥。三、Base64伪加密。
2024-06-24 14:56:13
488
原创 C++开源项目研究——gh0st远控(一)
上一节我们讲过肉机最关键的一步就是通过connect来连接指定的主控端其实在次之前应当是主控端先监听相应的端口,然后肉机再来连接这个端口的在主控端的OnInitDialog当中调用:listenPort();//开始监听端口比较关键的就是m_iocpServer->Initialize(NotifyProc, NULL, 100000, nPort)其中第一个参数NotifyProc是一个回调函数,原型为:回调函数其实就是函数指针的一种特殊形式(二者是共性与个性,一般与个别的关系😋)
2024-03-29 18:03:53
1178
原创 C++开源项目研究——gh0st远控(一)
接下来我们来看看这个导出函数具体长啥样显然TestRun函数的主任务就是创建了main线程,也就是主线程//添加导出函数//保存上线地址//保存上线端口//这里等待线程结束那么主线程main又做了哪些事情呢?1)这里面比较重要的就是声明了CClientSocket socketClient;类可以大致瞅一眼这个类的定义:里面包含了m_Socket这种关键信息,之所以封装成一个类是为了方便以后的管理,使得里面的变量和接口不会太散乱。
2024-03-26 12:25:26
603
原创 gh0st远程控制——客户端界面编写(一)
解决方案:在窗口初始化的函数OnInitDlg()函数当中添加额外代码,产生WM_SIZE消息,这样我们的WM_SIZE消息处理函数就会去修正窗口大小,这样最终窗口显示出来的时候就已经被修正了。分别为2个对话框添加列表控件变量:m_CList_Online;但是我们随窗口修正的窗口和一开始初始化时候的窗口不一致,怎么解决?转到类视图 》点击CPCRemoteDlg 》右键属性 》为对话框添加WM_SIZE消息的消息处理函数。1、新建一个基于对话框的MFC程序。4、使列表框随着对话框的大小同步伸缩。
2024-01-19 18:00:06
763
1
原创 王道考研计算机组成原理——数据的表示和运算
本文主要介绍了在底层计算机数据的表示和运算,原码反码补码移码、有符号数和无符号数、定点数和浮点数、IEEE754标准,标志位寄存器PSW的生成,大小端模式以及各种数据类型之间的转换问题。
2024-01-02 18:16:16
1442
原创 王道考研计算机组成原理——存储系统
本文主要介绍了:存储系统的基础知识、SRAM与DRAM的区别、只读存储器ROM、Cache的工作原理、Cache的三种映射方式和替换算法等关于主存储器管理的基础知识
2024-01-01 15:23:18
1727
原创 王道考研计算机网络——数据链路层
如果有很多广播帧在链路上进行传输,我们就希望给他隔离,诞生一些广播域,而广播域的隔离就需要路由器来支持,如果一个局域网中有非常多的组我们希望给他隔离开来,就需要用多个路由器,使得成本急剧飙升。你到北京,离它那里的基站比较近了,你的手机号就会被注册到它的基站里面,它的基站就会把此时此刻注册到这个基站的手机号记录下来,并给这些手机号发送一个北京欢迎你的信息。移动访问点:你坐火车到北京,离北京比较近了,北京附近的接入点就会更新它的数据库,把你动态的加入进去,所以会给你发一个北京欢迎你。为何尾部没有帧定界符?
2023-12-25 02:00:52
1628
原创 数据结构——树
每个宝宝的头上都只有一根天线树的高度:4(默认从1开始算)D节点的度:3这棵树的度:33棵树组成一个森林相互转换是重点树的度:最大的那个节点的度为3m叉树:每个节点最多有m个孩子 0 1 2 3 ...m比如二叉树:完全二叉树:只有叶子节点的右边能缺少,其余和满二叉树一模一样最多只有一个度为1的节点4也重要你想插入68其实很简单,只要从根开始对比关键字,大了就往右走,小了就往左走希望你长胖而不是长高,这样对比关键词的次数就会减少,别走那么深吗,受不了啊。
2023-12-16 11:51:16
115
原创 2024王道考研计算机组成原理——输入输出系统
本文主要介绍了:输入输出系统和几种IO控制方式;显存;I/O接口;程序查询方式;中断的原理和作用;多重中断
2023-10-29 15:09:20
779
原创 2024王道考研计算机组成原理——指令系统
本文主要讲解了指令格式,x86汇编语言,分支循环语句的汇编实现,函数执行的底层实现,CICS和RISC指令集的对比
2023-10-18 23:02:21
1504
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人