2015年01月10日 13:44:59

远程数据本地分析法

作者: 

本文源于对一个加密的站点的数据解密分析。本人利用本地文件对其远程请求进行分析,并成功破解解密算法。

也许对于js玩得比较溜的朋友,会有更多的调试分析方法,但是,本文描述这种方法算是别开生面,奇思妙想吧,想吐槽就吐槽,觉得还可以就点赞,哈哈~

限制条件:
js文件是从独立的域名加载得来,跟页面打开的域名不一样
(加此条件是因为同域情况下,会需要考虑更多因素,如代理下载+内容替换,这里只讲比较特例的情况,读者学其思想,举一反三运用即可)

远程数据本地分析法的原理:
1、下载需要分析的文件
2、利用hosts文件将远程数据本地化
3、利用远程代理将不需要分析的文件代理下载
4、修改本地文件进行调试

下面以本人今天解析成功的内容作为示例进行分析。
加密示例地址:http://demo.zjmainstay.cn/remoteDataLocalAnalyse
js加载地址:http://test.zjmainstay.cn/remoteDataLocalAnalyse/encrypted.js

1、下载需要分析的文件
下载http://test.zjmainstay.cn/remoteDataLocalAnalyse/encrypted.js

2、利用hosts文件将远程数据本地化
这个实际就是修改hosts文件,把需要分析的js文件所用域名给本地化了,如:

  1. 127.0.0.1 test.zjmainstay.cn

Windows下hosts文件位于:C:\Windows\System32\drivers\etc\hosts
Linux下hosts文件位于:/etc/hosts

3、利用远程代理将不需要分析的文件代理下载
本人利用Apache的重定向功能,实现如下:

  1. RewriteEngine On
  2. RewriteCond %{HTTP_HOST} test\.zjmainstay\.cn [NC]
  3. #只有文件不存在才代理下载(被分析文件存在,不代理)
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteRule ^(.*)$ http://test.com/remoteDataLocalAnalyse/download.php?file=$1 [L]

注意了,由于你本地访问test.zjmainstay.cn已经被重定向了,因此要借助别的电脑(如线上服务器),上面使用http://test.com做代理下载。
代理下载的程序为:

  1. <?php
  2. /**
  3. * @author Zjmainstay
  4. * @website http://www.zjmainstay.cn
  5. * download proxy
  6. * @filename download.php
  7. */
  8. if(empty($_GET['file'])) {
  9. exit('Deny!');
  10. }
  11. echo file_get_contents('http://test.zjmainstay.cn/'.$_GET['file']);

完成上面步骤,则你实现了对http://test.zjmainstay.cn域名下js的本地化调用,接下来把上面下载的http://test.zjmainstay.cn/remoteDataLocalAnalyse/encrypted.js对应放置好本地路径,则它在页面访问时就用的本地文件了。

  1. http://test.zjmainstay.cn/remoteDataLocalAnalyse/encrypted.js
  2. ==>
  3. http://test.zjmainstay.cn 请求的路径为:127.0.0.1 所在目录,我的是:
  4. D:\xampp\htdocs\
  5. 因此,整个文件的路径是:
  6. D:\xampp\htdocs\remoteDataLocalAnalyse\encrypted.js

4、修改本地文件进行调试

4.1 放置好之后刷新页面重新请求,此时,可以看到远程ip地址为本地127.0.0.1,如图(一)所示:

远程数据本地分析法

4.2 看到调用本地文件之后,我们便可以对其进行调试,查看源码实现原理,如图(二),追加调试语句:

远程数据本地分析法-追加调试语句

4.3 加好之后,再刷新页面,可以看到控制台打印了调试信息,如图(三)所示:

远程数据本地分析法-调试语句结果

4.4 通过观察控制台调试结果,可以发现,加密内容被按照单个字符解析了,然后判断是否特殊字符或者纯字母数字,如果是则直接返回,都在,则对当前字符的ASCII码做35次方处理后返回(解密结果),最后连接起来即可。

至此,解密方法得到。

(完)



未经同意禁止转载!
转载请附带本文原文地址:远程数据本地分析法,首发自 Zjmainstay学习笔记
阅读( 3697 )
看完顺手点个赞呗:
(7 votes)

1.PHP cURL群:PHP cURL高级技术
2.正则表达式群:专精正则表达式
3. QQ联系(加请说明):QQ联系博主(951086941)
4. 邮箱:zjmainstay@163.com
5. 打赏博主:

网站总访问量: