ckfinder2.6.2.1 java版破解

        前言:本文仅用于交流学习使用,切莫用于不正当用途。

        由于一些历史原因,富文本编辑器我喜欢使用CKEditor,而且其配套的CKFinder Ajax file manager功能非常不错。但是,直接从官网下载下来使用时,效果是这样的:

        怎么想都觉得不优雅,网络上主流的解决方法是将这2处的dom设置为隐藏,怎么想都觉得是治标不治本的方法。于是,我决定试着破解看看。

        既然没有授权,就会提示“This is  the DEMO……”,那么找到该处代码块修改一下逻辑,不就解决了吗?于是在Java源代码里使用“This is  the DEMO”作为关键字全工程搜索,结果是没有找到……

        在Java工程里的配置文件(src/main/webapp/WEB-INF/config.xml)中有配置项“licenseKey”,以此为线索抽丝剥茧,最终只发现这么一段代码块:

看起来不像有验证授权码是否合法的算法。

        不经意间,发现刷新ckfinder页面的时候,浏览器会发送如下2个请求到后端服务:

在后端服务配置文件中修改licenseKey(授权码)为:<licenseKey>abcd-fghi-klmn-pqrs-uvwx-z123-5678</licenseKey>,发现CKFinderJava/ckfinder/core/connector/java/connector.java?command=Init请求返回的数据有了变化:

难道授权验证操作室在前端js实现的?难道“c”里的内容与授权码有着某种关系?那么试着在前端js找到请求Init操作的回调方法看看。

        在chrome中使用Devtool当发送URL中包含“Init”就断点:

额……看起来好像没什么用……

如果以“Init”为关键字搜索该js代码呢?

似乎发现了点有希望的东西,但是这里一大片的加密内容字符串。然而不经意间,debug时发现:

这些加密的字符内容能够被js代码直接输出,原来这些加密的内容是转义符+8进制或者16进制的对应字符ASCII编码。通过跟踪代码发现变量“a.bF ”似乎被赋值了从后端服务接受的授权码内容。

        如果将“This is the DEMO……”转换成8进制、16进制,是不是就能找到提示语的代码位置呢?先写个简单的代码进行转码:

	@Test
	public void aaa(){
		String aaa = "This is the";
		char[] charArray = aaa.toCharArray();
		for(char cc:charArray){
			System.out.print("\\"+Integer.toHexString((int)cc));
		}
	}

运行得出16进制的编码:“\54\68\69\73\20\69\73\20\74\68\65”,以关键字:“\x54”搜索:

将字符串内容复制,并另外写个HTML页面,在里面使用alert()方法输出,果然是我们想要找到的内容。另外神奇的发现了这么一段:

 

貌似是授权码?分析最前面的“abcd-fghi-klmn-pqrs-uvwx-z123-5678”与“laim1cdzb”关系,根据“RMRHY5Q4S”得出“MS5Q-***R-*RH*-****-****-4Y**-****”。在后端配置文件中换上这个授权码试试:

哟!~提示语变化了!~看来那授权码真的是官方留下的秘籍。不过很明显,还是有问题,现在授权码过期了!~继续用刚刚搜索到“This is the DEMO……”的方法搜索“Product license has expired”。

再继续找找这个大写的“R”在哪里被使用了(搜索时,使用关键字“R;”):

加行代码“aT.mj = "hehe";”试试效果,发现是找对地方了。通过进一步跟踪、分析发现,该段代码块中的“r”变量值与授权时限有关,对应获取到的授权简码(RMRHY5Q4S)倒数第2位,完整授权码(MS5Q-***R-*RH*-****-****-4Y**-****)第26位。在后台将值随便改成个“9”试试:

于是,神奇的破解成功了!~

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页