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

16 篇文章 3 订阅
2 篇文章 0 订阅

今天做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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值