CTF训练营-简单的js解密

题目(原题地址)如下:

jdjjsjm1

思路:看到这个题目的时候,我的第一反应是想起了前几天在知乎上看到的一个回答,直接在控制台用js把密码显示出来,代码如下:

但是结果并不如人意,发现显示出来的是一串64个字符的加密文本。换思路,F12看网页源码,结果发现了一段js代码(离答案又近了一步)

由此可见网页的密码是用js插入的,出题者只给了加密的代码,pseudoHash的参数是解密,但解密的代码部分是空的,需要我们通过给出的加密函数反推出解密函数(考验编程的时候到了)。查了下js的几个函数的意思,大致加密过程如下:
1)给定要加密的字符串;
2)逐个取出并计算他们的Unicode编码,如果编码小于128,则编码加128 如果编码小于127 ,则编码减去128.然后在用255减去处理的编码;
3)将处理后的编码转成2位的16进制,头部缺的补0;
4)十六进制转成字符串组合起来就是加密后的字符串。

写出对应的反推代码如下(用的python,js不熟练)

解出来是20f79a5fa90c0796d2cfdbe8763dfb67,用MD5解密 发现是7560,提交发现答案不对。然后直接用md5提交到密码框,答案就出来了(囧)。

——Snake

snake

作者: snake

我们需要为这个社会做一点贡献,失去了才懂得去珍惜。

发表评论

电子邮件地址不会被公开。 必填项已用*标注