php
判斷相等有兩個符號
== 只判斷數值是否相等,不管變數型別是什麼
=== 要求數值,和型別都要相等
php是一門弱語言
比如
<?php$a=
12345;$b
='12345hahahaha'
;//這個字串可以看成是整數12345,同樣字串'abcdef' 可以看成整數 0
$a==$b;
$a!===$b
;
陣列繞過
現在知道的有這麼多,以後還可以補,不會的時候可以蒙一發。
md5(),sha1(),strpos(),ereg(),strcmp()
如果傳入md5函式的引數為陣列型別,則返回null
null
===null 時可以通過陣列可以繞過 === md5判斷
注意啊,空字串和null,false都是以值為0儲存的,但是空字串的型別是string,null的型別是null,false是boolean。
null是一種特殊的型別.
兩種情況下為null
$var = null;
$var;
「」、0、「0」、null、false、array()、var $var; 以及沒有任何屬性的物件都將被認為是空的
strcmp
("foo"
,array()
)=>
null
+php warning
strcmp
("foo"
,new
stdclass)=
>
null
+php warning
strcmp
(function()
,"")=
>
null
+php warning
ereg函式的漏洞 :
存在%00截斷(已被preg_match
()替代)
輸入引數為陣列時返回值為null
sha1
(array()
)=null
//一種雜湊加密方式
php 陣列 鍵值 特性
key 可以是 integer 或者 string。value 可以是任意型別。此外 key 會有如下的強制轉換 包含有合法整型值的字串會被轉換為整型。例如鍵名 8 實際會被儲存為 8。但是 08 則不會強制轉換,因為其不是乙個合法的十進位制數值。浮點數也會被轉換為整型,意味著其小數部分會被捨去。例...
PHP語言與C語言的區別(控制結構 陣列 特性)
首先php語言是一種物件導向的語言而c語言是面向過程的。php主要是用來開發web程式的語言,而c語言是種廣泛使用的語言,尤其用來書寫一下比較複雜的後台 php和c語言一樣,有著if,else,elseif switch,while,do while,for,break,continue,goto等...
PHP的兩個特性導致waf繞過注入
1 hpp http引數汙染 http引數汙染指的是,在url中提交相同鍵值的兩個引數時,伺服器端一般會進行一些處理。比如apache就要以最後乙個引數為準,比如 user.php?id 111 id 222 如果輸出 get陣列,則id的值只會取222,即url上提交的多餘值覆蓋了前乙個值。2 乙...