filter_var()函数
?
我們使用?payload?:?url=javascript://comment%250aalert(1)?,可以執行?alert?函數:
實際上,這里的?//?在JavaScript中表示單行注釋,所以后面的內容均為注釋,那為什么會執行?alert?函數呢?那是因為我們這里用了字符?%0a?,該字符為換行符,所以?alert?語句與注釋符?//?就不在同一行,就能執行。當然,這里我們要對?%?百分號編碼成?%25?,因為程序將瀏覽器發來的payload:javascript://comment%250aalert(1)?先解碼成:?javascript://comment%0aalert(1)?存儲在變量?$url?中(上圖第二行代碼),然后用戶點擊a標簽鏈接就會觸發?alert?函數。
?
?
?
返回值??
Returns the filtered data, or?FALSE?if the filter fails.
?
filter_var?: (PHP 5 >= 5.2.0, PHP 7)
功能?:使用特定的過濾器過濾一個變量
定義?:mixed?filter_var?(?mixed?$variable?[, int?$filter?= FILTER_DEFAULT [,?mixed?$options?]] )
針對這兩處的過濾,我們可以考慮使用?javascript偽協議?來繞過。為了讓大家更好理解,請看下面的demo代碼
?
htmlspecialchars?:(PHP 4, PHP 5, PHP 7)
功能?:將特殊字符轉換為 HTML 實體
定義?:string?htmlspecialchars?( string?$string?[, int?$flags?= ENT_COMPAT | ENT_HTML401 [, string$encoding= ini_get("default_charset") [, bool?$double_encode?=?TRUE?]]] )
& (& 符號) =============== & " (雙引號) =============== " ' (單引號) =============== ' < (小于號) =============== < > (大于號) =============== >參考:[紅日安全]代碼審計Day2 - filter_var函數缺陷 - 先知社區 https://xz.aliyun.com/t/2457
轉載于:https://www.cnblogs.com/NBeveryday/p/11301874.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的filter_var()函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实现IButtonControl接口时,
- 下一篇: 一个程序员的创业失败教训