了解PHP弱类型
==与===
php中有两种比较的符号==与===
<?php
$a==$b;
$a===$b;
?>
==在进行比较的时候,会先将字符串类型转化成相同,再比较
===在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行
// 简单实验
<?php
var_dump("admin"==0);
var dump("1admin"==1);
var dump("admin1"==1);
var_dump("admin1"==0);
var_dump("Oe123456"=="Oe4456789");
?>
<?php
$test=1 + "10.5";
$test=1+"-1.3e3";
$test=1+"bob-1.3e3";
$test=1+"2admin";
$test=1+"admin2";
?>
弱类型CTF实战
开发建议
认真阅读PHP manual,不能以其他语言的经验来完全带入php进行编码在所有可能的地方,都使用===来代替==
对于用户输入做过滤和类型检查
尽量使用新版本的php,apache