了解PHP弱类型

==与===
php中有两种比较的符号==与===

  1. <?php
  2. $a==$b;
  3. $a===$b;
  4. ?>

==在进行比较的时候,会先将字符串类型转化成相同,再比较
===在进行比较的时候,会先判断两种字符串的类型是否相等,再比较
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值并且比较按照数值来进行

  1. // 简单实验
  2. <?php
  3. var_dump("admin"==0);
  4. var dump("1admin"==1);
  5. var dump("admin1"==1);
  6. var_dump("admin1"==0);
  7. var_dump("Oe123456"=="Oe4456789");
  8. ?>
  9. <?php
  10. $test=1 + "10.5";
  11. $test=1+"-1.3e3";
  12. $test=1+"bob-1.3e3";
  13. $test=1+"2admin";
  14. $test=1+"admin2";
  15. ?>

弱类型CTF实战

image.png
json绕过:
image.png
image.png
image.png

开发建议

认真阅读PHP manual,不能以其他语言的经验来完全带入php进行编码在所有可能的地方,都使用===来代替==
对于用户输入做过滤和类型检查
尽量使用新版本的php,apache