本文主要是介绍buuctf [极客大挑战 2019]BuyFlag,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
buuctf [极客大挑战 2019]BuyFlag
打开网页,看到可以购买flag,条件是:
1,must be a student from CUIT
2,Flag need your 100000000 money
源码提示:
<!--~~~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:money and password
is_numeric()
函数
检测字符串是否只由数字组成,如果字符串中只包括数字,就返回Ture,否则返回False。举几个例子: 123 ,12.3 ,+123这些都能返回true,但是如果字符串中含有别的符号或者字母则返回false。
PHP弱类型
PHP中有== 和 ===两种比较方法,前者比较之前会把等号两边的数据类型转换成相同的,后者在比较之前要先判断数据类型是否相同,我们称前者为PHP的弱类型,因为很容易发生“意外情况”。
var_dump("a"==0); //true;
var_dump("1a"==1); //true;
var_dump("a1"==1) //false;
var_dump("a1"==0) //true;
还有个特殊点的:
var_dump("0e123456"=="0e4456789"); //true
因为科学计数法0的任意次方都等于0,所以这种类型也相等。
所以
post:money=100000000&password=404+
参数money的Nember lenth is too long
科学计数法绕过
money=1e7
大意了钱少了,那就奢侈一把
money=1e20 (1e20=100,000,000,000,000,000,000)
这篇关于buuctf [极客大挑战 2019]BuyFlag的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!