PHP萬能密碼登陸

weixin_34262482發表於2010-09-26

說實話如果一個網站的前臺都是注入漏洞,那麼憑經驗,萬能密碼進後臺的機率基本上是

    百分之百。

    可是有的人說對PHP的站如果是GPC魔術轉換開啟,就會對特殊符號轉義,就徹底杜絕了

    PHP注入。

    其實說這話的人沒有好好想過,更沒有嘗試過用萬能密碼進PHP的後臺。

    其實GPC魔術轉換是否開啟對用萬能密碼進後臺一點影響也沒有。

    如果你用這樣的萬能密碼‘or'='or’,當然進不去,理由是GPC開啟的時候單引號會被轉換。

    PHP注入時我常用的萬能密碼是:‘or 1=1/*.

    那我們分析一下為什麼這可以進後臺。

    如果sql語句這樣寫:“SELECT * FROM admin where name=’”.$_POST['name'].“‘and

    password=’”.$_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/*的

相關文章