整理(web)
0X01(签到题)
右键看源码,得到flag。
0X02(md5 collision)
源码:
<?php
$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";}
?>
根据给出的源码的意思,要提交的a不等于QNKCDZO,还要满足$md51 == $md52
,这里不是要md5值完全一样,因为比较时用的是松散比较==
,QNKCDZO的md5值为0e830400451993494058024219903391
,这里因为是==的比较只比较两个操作数的“值”是否相等,而无论类型是否相同。如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。字符串转换为整数时,是从左到右,直到遇到非数字字符为止。也就是说 ‘123abc456’ 会被转换成 123,而不是 123456。另外字符串开始的空格会被忽略,比如 ’ 234abc’ 转换为 234。这里它的md5第二位是e,也就是比较只比较第一个数字0,找一个md5值符合第一位为0,第二位为字母的就行。
知识点:
PHP
松散比较
0X03(签到2)
源码:
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
尚未登录或口令错误<form action="./index.php" method="post">
<p>输入框:<input type="password" value="" name="text1" maxlength="10"><br>
请输入口令:zhimakaimen
<input type="submit" value="开门">
</form>
</html>
让输入zhimakaimen
,注意到maxlength="10"
,所以通不过,F12修改一下就行。
0x04(这题不是WEB)
讲真,这题真不是web,把图片保存到本地,记事本打开得到flag,算是隐写。==。
0X05(单身二十年)
burp suite拦截发到repeater,查看响应,flag就在里面。