1. 程式人生 > >php intval()函數漏洞,is_numeric() 漏洞,繞過回文判斷

php intval()函數漏洞,is_numeric() 漏洞,繞過回文判斷

跳過 變量 style clas intval 一個 發現 數字字符串 color

Intval函數獲取變量整數數值
Intval最大的值取決於操作系統。 32 位系統最大帶符號的 integer 範圍是 -2147483648 到 2147483647。舉例,在這樣的系統上, intval(‘1000000000000’) 會返回 2147483647。64 位系統上,最大帶符號的 integer 值是 9223372036854775807。

這個有個應用就是在判斷數值是不是回文上,如果參數為2147483647,那麽當它反過來,由於超出了限制,所以依然等於2147483647。即為回文。

is_numeric() 判斷變量是否為數字或數字字符串,不僅檢查10進制,16進制是可以。

is_numeric函數對於空字符%00,無論是%00放在前後都可以判斷為非數值,而%20空格字符只能放在數值後。所以,查看函數發現該函數對對於第一個空格字符會跳過空格字符判斷,接著後面的判斷!

該函數還可能造成sql註入,例如將‘1 or 1‘轉換為16進制形式,再傳參,就可以造成sql註入

intval($req["number"])=intval(strrev($req["number"])) 如果要求不是回文,但又要滿足這個條件,可以用科學計數法構造0=0:number=0e-0%00

php intval()函數漏洞,is_numeric() 漏洞,繞過回文判斷