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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM