写了一部分的web题,算是把它最基础的一部分做了一遍,以后的几天将持续更新BugkuCTF WEB部分的题解,为了不影响阅读,所以每五道题的题解以一篇文章的形式发表,感谢大家一直以来的支持和理解,共勉~~~
签到题
打开链接,里边问,key在哪里??
哈哈哈,我们打开查看源码就知道了,
安安静静躺在源码里边
md5 collision
打开题目是这样的一串代码
1 $md51 = md5('QNKCDZO'); 2 $a = @$_GET['a']; 3 $md52 = @md5($a); 4 if(isset($a)){ 5 if ($a != 'QNKCDZO' && $md51 == $md52) { 6 echo "nctf{*****************}"; 7 } else { 8 echo "false!!!"; 9 }} 10 else{echo "please input a";}
在PHP中md5()和sha1()函数都存在一个漏洞,当像函数中传入数组时会无法处理返回同一值,即不同的数组通过md5(),sha1()处理后结果是一样的。
同时PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,
其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
首先我们使用工具将QNKCDZO转码为MD5:0e830400451993494058024219903391
百度查询一下,oe开头的MD5的对比值
签到2
这个题打开网页出现一个输入窗口,我们按照提示输入指令,但均提示指令错误
我们此时打开源代码查看
<input type="password" value="" name="text1" maxlength="10">
发现有最大输入字节限制,我们将10改为20或者更大,回去重新输入zhimakaimen
flag就爆出来了
PS:也可以使用BP进行抓取数据包更改实现传输
这题不是WEB
打开网页是一个图片,我们下载下来
打开图片,并没有什么发现,我们试一试用文本格式打开
发现都是乱码,并没有我们想要的信息,下拉至最后一行
flag安安静静的躺在哪里
层层递进
这个题稍微有点考虑思考能力,也有点技巧性
打开网页,看半天也没发现什么东西,这不就是一个简单的网页嘛???
无奈的我们烦不胜烦的右键不断看源码,突然点进了源码最后几行的一个链接
哇!!!这个链接竟然可以打开,我们继续联想题目层层递进,继续查看源码,看还能不能继续进入网页
咦!又能打开,看来这应该就是flag的所在了
我们重复打开源码的链接直到我们看到以下网页
打开这个页面,还是没flag,我们继续查看源码
哈哈哈,发现没,竖着排列的就是flag