热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【技术分享】2016年京津冀大学生网络安全知识技能挑战赛writeup

作者:yang24cx稿费:500RMB(不服你也来投稿啊!)投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿0x01 签到题原图半天没扫出来,做了个反色,再扫,成功。0x02 H

http://p7.qhimg.com/t0198372e4f719e0bdc.jpg

作者:yang24cx

稿费:500RMB(不服你也来投稿啊!)

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


0x01 签到题

原图半天没扫出来,做了个反色,再扫,成功。

http://p1.qhimg.com/t01ee136f34a02d9878.png

http://p0.qhimg.com/t01623edd616e431863.png

0x02 Hello

查看页面的代码发现如下表达式,要求sha1(var)==Ciphertext,显然这里的Ciphertext应该是个变量。

http://p3.qhimg.com/t0104dc1a416dbe9c4c.png

发现请求页面时响应头部有Ciphertext的值。

http://p9.qhimg.com/t01b525f7ca41ab4e20.png

那思路就很清晰了:访问页面获得sha1()括号中的字符串以及头部的Ciphertext的值,通过暴力穷举的方式找到满足条件的三个数字

脚本如下:

http://p8.qhimg.com/t01991f2337ee06af80.png

跑了之后竟然得到这个,还需要算个表达式;  

http://p8.qhimg.com/t01a8921a74b5679f2e.png

大同小异,继续提取页面中的表达式eval()计算提交即可:

http://p6.qhimg.com/t011983812ba1940f8c.png

0x03 crack MD5

访问页面得到如下返回,大意是第二行的是md5密文,其对应的明文就是第三行的那些字母,不过顺序被打乱了。

http://p4.qhimg.com/t01631da44b6eda5871.png

看明白题思路就清晰了:首先访问页面,提取密文及明文字符串,对明文字符串进行排列组合并加密,将结果与已给的密文比较即可。

http://p3.qhimg.com/t01fbfe20e7a3d1b707.png

但是这样做很耗时,大部分情况都是too late,不过还好,时不时能跑出来一次。

http://p4.qhimg.com/t01910bf80681c3694a.png


0x04 破解

文件是个压缩包,解压还要密码,丢到某破解软件中,提示加密的文件为0。

http://p2.qhimg.com/t0115062a12aabd2d2f.png

那应该是伪加密了,用十六进制编辑器打开,将文件相应的标志位0900修改为0800即可。

http://p5.qhimg.com/t01a8ef8d93857da63d.png

解压文件得到noflag.gif。 

http://p1.qhimg.com/t01b4669449dd0c11fe.png

并没有什么,想用记事本打开图片,竟然把我电脑卡死了。继续用winhex打开。

http://p0.qhimg.com/t01fa76a76e2765f28d.png

发现有一大长串似乎是base64码的字母,提取出来解码,发现解码后还是base64,有情况啊!继续解码,还是base64,三次之后解出含gif字样的内容,应该是张图片。

用base64直接解码成图片

http://p9.qhimg.com/t01daa76bca45e03585.png

图片是动的,flag一闪一闪很难定格。用gif编辑器打开图片得到flag。

http://p1.qhimg.com/t017971cb6b3d0d9fbd.png


0x05 tryhard

加密部分算法,flag{******}每个字符会生成一个两位的16进制形式的字符,而密文40位,所以flag{*****}共20位,其中key=******长14位,对于从flag{*****}开始的每一个字符,加密过程由key中的[0,7],[1,8]……位依次参与迭代运算:

http://p6.qhimg.com/t011e04b40b78f64fb5.png

加密算法迭代化简一下就更清晰了:

http://p3.qhimg.com/t01118d7f7045af0a2d.png

由于flag{********}中flag{}及其对应的密文是已知的,在mod251之后i,j可认为是[0,251]之间的数,带进去暴力破解即可

http://p7.qhimg.com/t017dd6011753d47c3b.png

求得i,j分别等于15和198。

http://p1.qhimg.com/t01456ab6f1e4adbf3f.png

现已知i,j那么密文中flag{*****}对应*******的那一串根据化简出来的表达式,反带即可

http://p5.qhimg.com/t014e7b6838e54887f3.png

http://p5.qhimg.com/t01a4039fd9b490c908.png

0x06 re50

这是我队友做的,打完比赛他就出去玩了,我帮他写一下,不周之处还请包涵。IDA载入看到verify函数,里面的v2[]数组即是flag。

http://p3.qhimg.com/t0168ac5ae3869b7a6f.png

0x07 cry50

首先base64解码密文Ot7lAO72opsedkxTngbD3FhwP50x8sosA f9oL OkIpr8PN7J0Omq7nWxvgvaiRn+Tp95zcTDj,

http://p8.qhimg.com/t01345e8f35d2ac6049.png

解码后的密文前16位即是salt,后面是crypt()加密的结果,key已知,salt已知,则sha1(key+salt).digest()可知,然后将结果及解码后密文crypt()加密的部分丢进去,解密即可得到flag。

http://p4.qhimg.com/t015e6ab90f67002b3b.png


推荐阅读
author-avatar
李东润
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有