程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP萬能密碼的實際作用分析

PHP萬能密碼的實際作用分析

編輯:關於PHP編程

關於

可是有的人說對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/*的
 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved