zoukankan      html  css  js  c++  java
  • 第二届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杯全国大学生信息安全技术大赛官方解题思路






        每当夜深人静的时候,想想今天发生了什么,失去了什么,得到了什么,做了什么,没做什么,该做什么,不该做什么,明天要做什么!
  • 相关阅读:
    noexcept(c++11)
    右值引用和std::move函数(c++11)
    mint-ui 取值
    apicloud 注意事项
    倒计时
    获取第n天日期
    防止split没有切割的变量报错
    return
    时间戳转为日期
    echarts 中 请求后台改变数据
  • 原文地址:https://www.cnblogs.com/KongkOngL/p/3923446.html
Copyright © 2011-2022 走看看