關於
可是有的人說對PHP的站如果是GPC魔術轉換開啟,就會對特殊符號轉義,就徹底杜絕了PHP注入。其實說這話的人沒有好好想過,更沒有嘗試過用萬能密碼進PHP的後台。
其實GPC魔術轉換是否開啟對用PHP萬能密碼進後台一點影響也沒有。如果你用這樣的萬能密碼'or'='or',當然進不去,理由是GPC開啟的時候單引號會被轉換。PHP注入時我常用的PHP萬能密碼是:'or 1=1/*.
那我們分析一下為什麼這可以進後台。如果sql語句這樣寫:"SELECT * FROM admin where name='".$_POST['name']."'andpassword='".$_POST['password']."'",那我們在帳號處輸入萬能密碼'or 1=1/*,密碼隨便輸,sql語句就成了select * from admin where name='’or 1=1/*' and password='任意字符'。/*為mysql的注釋符,這樣後面的東西就都被注釋掉了,也就是為什麼密碼隨便輸的原因。
假設GPC轉換沒有開啟,那麼請看:where name='’or 1=1(*/後面的東西被注釋掉了),name='’的邏輯值為假,而後面的1=1邏輯值則為真,對於整體就成了假 or 真,最終的邏輯值還是真,就進後台了。
那麼如果GPC轉換開啟了,就對單引號進行了轉換。語句就變成了where name='’or 1=1,在看一下和剛才有什麼區別,無非是多了個。name=''與name=''的邏輯值一樣,都為假,那1=1為真,總的sql語句的邏輯值不還是真嗎?那有進不去後台的理由嗎?
所以總的來說,PHP萬能密碼可以這樣寫:'or 1=1/*,而GPC轉換是否開啟對它沒有任何影響!所以請改變你的想法:存在字符型注入的php網站是可以用萬能密碼'or 1=1/*的