CTF 大小写字母转换 try lower and upper

tech2022-12-25  111

今天做CTF练习题的时候碰到这样一道题,挺有趣的,记一下。

题目只有一个加密压缩包,里面就有一个flag.txt的文件,显然就是需要设法破解出这个压缩包的密码。

另外题目有一句话写着trylowerandupper。直译就是试试小写和大写。直接用这个作为密码,发现无效,全部转成大写,发现也无效。

想了一下,可能正确的密码应该就是把这句话的部分字母改成大写,部分字母改成小写。那么我们的思路就是去生成这样的一个字典,然后用跑字典的软件ARCHPR去跑一下。

trylowerandupper这句话共有16个字母,每个字母都有大小写两种可能,那么就有2的16次方种可能性,也就是65536种,应该算不算很多。我们用js生成一下字典,并储存到textarea中。

<!DOCTYPE html> <html> <head> <title></title> <textarea id="textarea"></textarea> </head> <body> </body> <script type="text/javascript"> var cipher = 'trylowerandupper' var dict = [] function crossdict(l,u){ var tmp1 = [].concat(dict); if(tmp1.length){ for(var i,i=0;i<tmp1.length;i++){ tmp1[i] += l; } } else{ tmp1 = [l]; } var tmp2 =[].concat(dict); if(tmp2.length){ for(var i,i=0;i<tmp2.length;i++){ tmp2[i] += u; } } else{ tmp2 = [u]; } dict = tmp1.concat(tmp2) } function makedict(){ for(var i,i=0;i<cipher.length;i++){ crossdict(cipher[i].toLowerCase(),cipher[i].toUpperCase()); } var value = '' for(var i=0;i<dict.length;i++){ value += dict[i] + '\n'; } document.getElementById("textarea").value = value; } makedict(); </script> </html>

随便找个浏览器运行一下,然后把textarea中的内容复制到新建的txt中,保存成字典。

接着就是跑字典了,意料之外的迅速呀,一下子就得到了压缩包的密码。

打开压缩包得到flag:

最新回复(0)