js逆向——webpack实战案例(一) 首先通过跟栈的方法找到加密位置我们跟进u函数,发现是通过webpack加载的向上寻找u的加载位置,然后打上断点,刷新网页,让程序断在加载函数的位置u = r.n(a)
js逆向——异步栈分析(上) 这里的异步是一个while循环,不断取出一些回调函数来执行,对于then前面的e.shift表示执行成功的情况,而后面的e.shift表示执行失败的情况,而e是一个数组,用于存放很多异步的回调函数,shift相当于栈里面的pop,用于从异步栈当中取出,执行,并删除栈顶的回调函数。的位置在文件chunk-vendors.a1bfb9a0.js:formatted的第668行,然后先取消断点,等时机到了再打上!前三个函数很有可能是封装的发包函数,直接跟异步的栈。将所有断点移除,然后在异步栈里面下断。
js逆向——2024最新金山词霸(练习二) 注:当看到加密函数传入字符串的时候,一定要先用123456测试一下,不要上来就扎入细节当中。然后就是解密数据了,过程相对简单,就是应该普通的AES-ECB解密。就是跟栈的时候注意看一下url对不对,别跟错接口了😂😂。经过分析sign的生成,是先经过md5然后AES加密生成。整个加密参数的生成流程我们都清除了,下面就是扣代码环节了。ok,今天的你就到此为止吧,明天还要接着狼🐺啊!简单看一下加密参数,就sign是比较可疑的。经过测试,也拿到正确的响应数据,并成功解密。对于XHR请求的包,直接跟栈就对了!
js逆向——2024最新有道翻译(练习一) 注意:这种一般是请求参数出现错误,先检查get/post是否正确,然后就是post的请求参数一定是缺一不可!这个和请求头略有不同!往上跟栈到这里看不到表单数据了,就在附近找参数e,t如何被加工的即可,于是找到了k(t)函数,或者上下翻翻看也会有意外之喜哦~首先看请求头,重放测试有没有cookie反爬(重放的时候注意松开断点,不然可能返回数据为0B)很明显返回的数据被加密了,根据之前的经验,返回的大概率是json格式的数据。我们搜索sign值,发现并没有匹配到接口,说明是动态生成的加密参数。
js逆向——返回加密数据的处理 这样数据解密的步骤我们已经分析完了,现在还有一个问题就是我怎么知道返回的7个XHR数据包哪一个是列表页展示的、我们希望得到的目标数据呢?这说明我们收到的响应数据是加密后的结果,返回客户端之后由客户端解密拿到明文字符串展示在前端当中,所以我们才能在网页看到有效的信息。现在我们还需要确认一件事,就是这个网站使用的AES-CBC是不是标准的AES算法,这将决定我们需不需要扣代码。而且通过观察,js代码没有特别需要扣的地方,都是使用的库当中自带函数。ok,今天的你就到此为止吧,我们下期再见~
js逆向——origin/refer请求头反爬 但是如果将origin和refer同时注释就会报错403,说明这里是一个检测点,服务端需要判断客户端是不是点击链接进来的,如果直接请求会失败。我们注释掉x-api-key返回了403,这个参数是必不可少的,而且有可能是动态生成用于检测爬虫的。使用正则表达式提取出来静态参数x-api-key的值,为二次请求真正的摘要做准备。保留有用的参数(当然都保留也行,我们主要是想看一下哪些参数会对爬虫进行检查)排除掉在请求头当中的目标之后,我们顺利找到静态参数在文件当中的位置。
js逆向——url重定向处理 结果报错$未定义,这是因为我们本地缺少浏览器的环境,我们去浏览器找$(this).attr('target');发现是写死的一个字符串:var ee = $(this).attr('target');ee=‘_blank’因此我们需要监听点击a标签之后发生了什么(执行了哪些动作),以此来判断究竟访问的是哪个网页。反正扣js代码就是缺啥补啥即可,不知道是什么情况就去浏览器调试观察一下就ok了。ok,下面是最后一步,使用pycharm调用js代码即可大功告成了。结果返回的是403,访问出错,被禁止了。
X科网js逆向分析 所以我们可以直接对pwd使用md5加密(省事)/ 把网页中的md5函数代码抠出来。显然这是函数内实现的函数,也就是闭包,所以我们只需要把闭包的整个函数拿下来即可。然后我们可以测试一下md5(1)发现得到的是正确的结果c4ca4.......我们将闭包代码复制到js调试工具当中,发现调试工具已经自动识别出来md5了。通过$.md5(pwd)之后得到的加密结果就是我们的pwd参数。得到c4ca4,说明就是$.md5(),md5加密。1)测试使用$.md5(1)加密数字1。2)测试$.md5(pwd)
某山词霸翻译js逆向分析 当发起一次Post请求,若未指定Content-type,则默认content-type为application/x-www-form-urlencoded,即参数会以FormData的形式进行传递,不会显示出现在请求URL中。当发起一次post请求,若Content-Type为application/json,则参数会以Request Payload的形式进行传递(数据格式为json),不会显示出现在请求url中。我们发现只有参数sign是动态生成的,需要特殊处理,根据经验sign是通过加密生成。
token、session、cookie、sign分析 接口在网络传输过程中如果被黑客挟持,并修改其中的参数值,然后再继续调用接口,虽然参数的值被修改了,但是因为黑客不知道sign是如何计算出来的,不知道sign都有哪些值构成,不知道以怎样的顺序拼接在一起的,最重要的是不知道签名字符串中的key是什么,所以黑客可以篡改参数的值,但没法修改sign的值,当服务器调用接口前会按照sign的规则重新计算出sign的值然后和接口传递的sign参数的值做比较,如果相等表示参数值没有被篡改,如果不等,表示参数被非法篡改了,就不执行接口了。
微x公众平台js逆向分析 这一行调用的一个函数,返回pwd有点可疑哦,我怀疑你这个函数就是加密函数,不妨打个断点(多打几个断点也没关系,只要能断下来就是胜利)可以排除.css,去.js文件里面查找加密函数的位置,因为相关的加密算法一般都是由.js完成的。一般情况下,调试的时候遇到自定义变量缺失,直接在前面补充:var g = {}即可(空字典)加密后的密码为32位,怀疑是MD5(16/32位)g不是js中内置的对象/变量而是一个自定义的变量。但是如何函数是匿名的,如何执行呢?先点击格式化,然后点击加载代码。
常见加密方式:MD5、DES/AES、RSA、Base64 3、公钥和密文对于黑客来说都没有意义,密文到达服务端,服务器使用私钥解密密文,拿到对称密钥。2、客户端向服务端请求公钥,并使用公钥对明文加密,明文当中放置有客户端生成的对称密钥。二者的结合既利用了对称加密代价小的优点,又使用非对称加密避免了密钥分发的问题。使用RSA建立一个安全的连接,然后接收方拿到对称密钥之后用于实际的加密解密。16/32位的数据,最有可能就是使用md5加密的。4、双方使用开销较小的对称密钥进行加密解密操作。使用对称加密的时候,双方使用相同的私钥。三、Base64伪加密。
C++开源项目研究——gh0st远控(一) 上一节我们讲过肉机最关键的一步就是通过connect来连接指定的主控端其实在次之前应当是主控端先监听相应的端口,然后肉机再来连接这个端口的在主控端的OnInitDialog当中调用:listenPort();//开始监听端口比较关键的就是m_iocpServer->Initialize(NotifyProc, NULL, 100000, nPort)其中第一个参数NotifyProc是一个回调函数,原型为:回调函数其实就是函数指针的一种特殊形式(二者是共性与个性,一般与个别的关系😋)
C++开源项目研究——gh0st远控(一) 接下来我们来看看这个导出函数具体长啥样显然TestRun函数的主任务就是创建了main线程,也就是主线程//添加导出函数//保存上线地址//保存上线端口//这里等待线程结束那么主线程main又做了哪些事情呢?1)这里面比较重要的就是声明了CClientSocket socketClient;类可以大致瞅一眼这个类的定义:里面包含了m_Socket这种关键信息,之所以封装成一个类是为了方便以后的管理,使得里面的变量和接口不会太散乱。