pass check
300
核心源码
<?php
$pass=@$_POST['pass'];
$pass1=***********;//被隐藏起来的密码
if(isset($pass))
{
if(@!strcmp($pass,$pass1)){
echo "flag:nctf{*}";
}else{
echo "the pass is wrong!";
}
}else{
echo "please input pass!";
}
?>
题目链接:tip:strcmp(array,string)=null=0
首先呢,这个题目因为题放在内网,没有vpn所以没法做,但是提示都这么明显了,就是php的strcmp函数了。传入一个array就好了。
ps:
strcmp()函数在PHP官方手册中的描述是int strcmp ( string
str1,string
str2 ),需要给strcmp()传递2个string类型的参数。如果str1小于str2,返回-1,相等返回0,否则返回1。strcmp函数比较字符串的本质是将两个变量转换为ascii,然后进行减法运算,然后根据运算结果来决定返回值。
如果传入给出strcmp()的参数是数字呢?
$array=[1,2,3];
var_dump(strcmp($array,'123')); //null,在某种意义上null也就是相当于false。
资料链接:PHP弱类型安全问题总结
另附他人已做贴出的writeup: