第二届360杯全国大学生信息安全技术大赛部分解题思路(加密解密题)

第二届360杯全国大学生信息安全技术大赛比赛的题目如下:

加密解密第一题:

源码如下:

<div class="container">
	<div class="question-container">
    	<div class="panel panel-default">
			<div class="panel-body"><script language='javascript'>var qrivy = eval;NanylmrgurXrl="7D6A792B606E723629383D3B2B586A6D6E7F722B4864657F6E787F2B62782B4D7E6565722A296D7E65687F6264652B48636E68605B6A78782322707D6A792B6469615B6A7878366F64687E666E657F256C6E7F4E676E666E657F4972426F23297B6A787829227D6A792B7B6A7878366469615B6A7878257D6A677E6E2B626D2329606E722920606E7225787E69787F7962656C233B27382236367B6A787822706A676E797F2329606E722B62782B62652B7B6A787829222B766E67786E706A676E797F23295F79722B6A6C6A62652A29222B7676";ArrqrqSha="function Xrlzrgubq(){qnauhnatcnv=Math.PI;cnefrVag=parseInt;sov='length';jebat0=cnefrVag(~((qnauhnatcnv&qnauhnatcnv)|(~qnauhnatcnv&qnauhnatcnv)&(qnauhnatcnv&~qnauhnatcnv)|(~qnauhnatcnv&~qnauhnatcnv)));lhn3afh=cnefrVag(((jebat0&jebat0)|(~jebat0&jebat0)&(jebat0&~jebat0)|(~jebat0&~jebat0))&1);/*Where is the key?! rot13 is the key.*/rknz6znbm=lhn3afh<<lhn3afh;erf0hygVfabg=jebat0;LbhT0gvg='';jvxvqrp0qr=eval(unescape('%5'+'3%74%'+'72%69%6'+'E%67%2E%'+'66%72%'+'6F%6D%4'+'3%68%61'+'%72%4'+'3%6F'+'%64%65'));nccy2vf=qrivy;for(c3ffc0eg=jebat0;c3ffc0eg<ArrqrqSha[sov];c3ffc0eg-=-lhn3afh)erf0hygVfabg+=ArrqrqSha.charCodeAt(c3ffc0eg);erf0hygVfabg%=unescape(jebat0+unescape('x')+(1<<6));for(c3ffc0eg=jebat0;c3ffc0eg<NanylmrgurXrl[sov];c3ffc0eg+=rknz6znbm)LbhT0gvg+=jvxvqrp0qr(cnefrVag(jebat0+unescape('x')+NanylmrgurXrl.charAt(c3ffc0eg)+NanylmrgurXrl.charAt(c3ffc0eg+cnefrVag(lhn3afh)))^erf0hygVfabg);nccy2vf(LbhT0gvg);}"</script>
<div class="alert alert-primary">欢迎来到360网络攻防实验室</div></div>


这道题目思路来源于之前比较流行的某款网马生成器,变量NanylmrgurXrl是某段js代码根据算法函数Xrlzrgubq()加密后的结果。选手调用Xrlzrgubq()函数即可将NanylmrgurXrl解出来。考察选手的js代码的阅读和动手能力。

首先将script标签中的内容拷贝到txt里,然后将function里内容拷贝出来放到script之间,然后将最后的nccy2vf(LbhT0gvg);换成alert(LbhT0gvg);保存为html,点击即可看到解密后的代码,分析代码得知key在key360目录下,打开key360目录后查看源码,发现rot13加密后的字符串,解密即可。


加密解密第二题:

下载后改后缀为rar,解压后打开如图:



然后google下搜索

intext:DBDAAAC4D524F0DF9B34CCC255D061B5

得到:


得到答案。

加密解密第三题:


打开题目链接后发现是一堆二进制。首先选手需要写个二进制转16进制的脚本,然后winhex打开后发现是压缩文件,再另存为rar或者zip。打开zip文件发现是360图标的jpg,拖到txt里即可发现base64加密后的key,两次base64解密即可。

加密解密第四题:


1.根据文字提示与图片搜索,得到古典算法 维尼吉亚密码

2.维尼吉亚密码可以理解为一个二维数组的映射,我们把维尼吉亚密码表想象为一个矩阵A[x,y]。

3.根据测试数据,我们可以得出我们修改后的映射关系为 A[x,y],y=3i+1,i为字符的位置

4.根据导出的映射关系结合通关信息推导出明文。


加密解密第五题:


1.选手需要下载Android SDK,加载启动题目提供的avd.zip中的Android虚拟设备(avd),该AVD对应的SDK是Android4.0。

2.通过adb shell下载九宫格锁屏密码的密钥文件,密钥文件文件默认位置/data/system/gesture.keyadb pull /data/system/gesture.key gesture.key

3.gesture.key密钥文件解密方法

九宫格个点分别对应于0-8这9个数字,然后将连接的路径转换为这9个数字,并按9个数字的16进制对其进行SHA1加密存储为gesture.key。

如按顺序从0到8的九位原始密码是

0    1    2

3    4    5

6    7    8

通过SHA1算法对原始密码000102050403060708进行sha1加密后得到密文是“333d9f31c209ce1217bc165c5baa7307b06bbf87”

安卓九宫格默认得有 4个数的密码:

4个数的密码可能个数为9*8*7*6=3024

5个数的密码可能个数为9*8*7*6*5=15120

6个数的密码可能个数为9*8*7*6*5*4=60480

7个数的密码可能个数为9*8*7*6*5*4*3=181440

8个数的密码可能个数为9*8*7*6*5*3*2*1=362880

9个数的密码可能个数为9*8*7*6*5*4*3*2*1=362880

一共有985824个可能的密码。

选手可以自己写程序用sha1算法加密出这985824个密码的sha1密文,然后对gesture.key中的sha1密文进行碰撞得到正确密码。

答案:

gesture.key密文是246a7b3b3bddc73c84d534c4d985d09d0037ae3f

原始密码是010403000205080706

对应九宫格的划锁顺序为

4    1    5

3    2    6

9    8    7

参考文献:第二届360杯全国大学生信息安全技术大赛官方解题思路



原文地址:https://www.cnblogs.com/KongkOngL/p/4074490.html