进入页面
看着是个广告
查看源码
发现了pay.php
需要为cuit的学生,有一个亿和密码正确
查看源码
发现
<!--
~~~post money and password~~~
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}
-->
发现需要使用post传参,不过只有password
审计之后发现密码为404且不能为纯数字
这里是弱比较可以通过传入404a来绕过
或者
is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!
不过这里符合cuit的学生的条件是通过user=1来实现的,这个在题目中没咋体现
然后money会被提示太长,需要通过科学计数法来绕过
还有一种方法
使用money[]=1
说明:
int strcmp ( string $str1 , string $str2 )
参数 str1第一个字符串。str2第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。
可知,传入的期望类型是字符串类型的数据,但是如果我们传入非字符串类型的数据的时候,这个函数将会有怎么样的行为呢?实际上,当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0