1、签到题
查看页面源码
2、单身二十年
做过类似的题目,注意观察页面重定向
首先看源码,发现跳转链接是./search_key.php,点击链接后发现跳转的页面地址为./no_key_is_here_forever.php
方法一: 开发者模式,点击network,勾选preserve log,这样可以看到每个网页跳转所经过的步骤;点击search_key.php,response,即可看到flag。
方法二: 使用burp suit抓包
扩展:
window.location="/no_key_is_here_forever.php"
是用no_key_is_here_forever.php替换完整路径除根目录外的所有目录window.location="./no_key_is_here_forever.php"
和window.location="no_key_is_here_forever.php"
是用no_key_is_here_forever.php替换完整路径的最后一个目录
3、签到2
题目要求输入zhimakaimen
,长度为11,查看页面源码发现maxlength="10"
,在开发者工具中将 maxlength=”10” 字段修改为 maxlength=”11” 或是更大的值,然后输入字符串并提交。
4、这题不是WEB
下载图片用winhex或notepad++打开,在末尾发现flag
5、层层递进
查看源代码,跟随链接,依次访问SO.html -> S0.html->SO.htm ->S0.htm->404.html ,在最后一个页面里的注释部分可找到nctf{this_is_a_fl4g}
考察点:iframe嵌套页面
6、单身一百年也没用
思路和第2题相同,首先抓包,发现本应该跳转到web9/index.php
的页面被重定向到web8/no_key_is_here_forever.php
,在burpsuit中修改地址,查看response获取flag。
7、md5 collision
MD5碰撞
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "nctf{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
变量md51为’QNKCDZO’的MD5值,0e830400451993494058024219903391,if部分如果a的MD5值与md51相同,且a不等于’QNKCDZO’时,输出flag。
注意到在判断md5值是否相等时,使用的是==
,而不是===
;根据==
用法,0==字符串是成立的,因此可以绕过MD5检查。
==
是比较运算,它不会去检查条件式的表达式的类型===
是恒等,它会检查查表达式的值与类型是否相等
0e在比较的时候会将其视作为科学计数法,所以无论0e后面是什么,0的多少次方还是0
这是个经典的漏洞,只需要找到md5值为0exxx(xxx全为数字,共30位),这里提供4个都可以通过的值:240610708、QNKCDZO、aabg7XSs、aabC9RqS