南京邮电大学CTF练习网站
https://cgctf.nuptsast.com/challenges#Web
1 签到题
第一题比较简单,直接查看源码,发现flag就在源码里
nctf{flag_admiaanaaaaaaaaaaa},有人会问,你怎么就知道是这个,而不是admiaanaaaaaaaaaaa或者flag_admiaanaaaaaaaaaaa呢,答案很简单,直接填入答题栏验证就好了_(:з」∠)_
2 md5 collision
关键在于红色框中的这句,我们要传入一个a的值,让这个值≠QNKCDZO,又要二者的md5值相等。
这里涉及到的漏洞是php的hash漏洞“Magic Hash”
漏洞描述
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
解法
我们先求出给定字符串“QNKCDZO”的md5值:“0e830400451993494058024219903391”
这里推荐一个编码转换的网站https://web2hack.org/xssee/
然后我们可以直接百度0e开头的md5值,随便选一个
上面这个工具就是传说中的神器Hackbar
夺旗成功~
3 签到2
让输入口令,那我们直接输入就可以得到flag啦(要是这么简单就好了)
查看源代码,发现在前端做了输入长度的限制
前端限制可以通过抓包后修改绕过,这里我们输入“zhimakaimen”,用burpsuite抓取Request数据包(或者直接修改前端代码也行,把限制去掉或者改成更大的数)
可以看到我们提交的长度为11的字符串被截断为10个字符,我们直接补全,然后放行数据包。
成功获取flag
4 这题不是WEB
第一反应还是查看源码,没什么信息,但是观察到有个gif,下载下来看看,右键记事本打开
这里有个小知识,简单说一下,php的文件上传漏洞,如果限制上传类型为图片格式,我们可以上传一个图片木马上去,但是如果服务器端有检测文件内容的函数getimagesize(),这个函数会判断目标文件中是否真的有一张图片,我们可以在图片木马的前面添加一个“GIF89a”就可以绕过这个函数的检测。
跑题了,用记事本打开gif之后,在里面看看能不能找到flag
还真就找到了囧,感觉这道题意义不大,打CTF的目标是夺旗,但是不能只为了夺旗呀。。。
5.层层递进
老规矩先看源码
发现一个可疑分子“SO.html”,点进去看看
嗯?又有个S0.html(出题人挺皮的,这里是数字0,不是大写字母O),再点进去,又有个SO.htm,好吧,继续,flag应该就藏在这里了,不然不会没事搞这么多页面,一步一步点进去,最后有个404.html(其实我自己做的时候是直接burpsuite抓包,然后直接找到了这个文件-_-||)
flag就在这里
6 AAencode
这题我直接404了,连题目都看不到,找了别人的解法看了看,说是打开后一堆乱码,首先想到编码转换,转换为Unicode,然后扔到控制台里跑一下就出来了
7 单身二十年
他说可以靠手速
点击超链接之后,眼神好使的可以看到一个网页跳转(我截图真截不出来,先是跳转到search_key.php,然后又很快跳到no_key_is_here_forever.php),他的意图就是隐藏这个search_key.php文件,flag多半就在这里。
我们可以抓包