sql脫庫的幾種方法


當發現sql注入之后,脫庫的方法,有以下幾種:
 
(1)當目標主機支持外部連接時,使用Navicat 進行連接!當時目標主機不同,使用的Navicat種類不一樣:
mysql : Navicat for MySQL
oracle : Navicat for Oracle
全版本的Navicat Premium,支持MySQL, Oralce, PostgreSQL, SQLit 以及SQL Server。
 
補充:mysql端口默認:3306,mssql默認端口:1433 , oracle默認端口:1521
 
當使用Navicat連接上數據庫之后,選擇需要脫庫的表,右擊導出即可。
 
(2)當擁有權限時,我們可以上傳腳本脫庫,當然這里Navicat也提供了腳本。Navicat的安裝目錄下有ntunnel_mysql.php   ntunnel_pgsql.php 和 ntunnel_sqlite.php, 這三個文件分別支持對Mysql,PostreSQL 和SQLite數據庫使用HTTP通道連接,具體使用過程為:
1.將ntunnel_mysql.php上傳到目標機器的根目錄,然后打開Navicate,單擊“新建連接”——》“mysql”,選擇HTTP選項卡,勾選“使用HTTP通道”,在“通道地址”欄寫入ntunnel_mysql.php的URL,其他保持默認,然后返回常規選項卡,填寫鏈接名,用戶及密碼,這里需要的注意的是,連接的IP地址需要寫“Localhost”或者“127.0.0.1”。
 
(3)無法遠程連接時,sql注射!
首先我們使用sqlmap進行注入,並使用適當的輸入命令如 --current_db 得出當前數據庫名,使用--databases 得出當前數據庫中的表 --columns得出當前數據庫中的列名。使用--dump參數將所選的數據下載到本地。
 
當使用mysql --dump操作失敗時,我們可以使用sqlmap配合burpsuit進行注入。具體流程如下:
1.首先我們使用sqlmap進行測試,當測出數據庫名,表明之后,使用--count 參數,將將表中的數據條數統計出來,記為N。
2.以用戶表為例子,我們注入出用戶表中的數據條數,並且查看到數據庫表中的id為主鍵,並且遞增。這是我們可以構造注入語句,並且使用bp進行抓包,將抓包信息,發送給intruder,在position模塊,將id作為變量,在payloads模塊中,將payloads類型設置為Numbers,並且將值設置為從0到之前的N。
3.選擇抓取的數據,在option——》Grep extract模塊中單擊add,然后在彈出的新界面中選擇“Fetch Response”獲取返回信息,獲取返回信息后,選擇你要抓取的內容,BP會根據選取的內容自動生成正則表達式,當正則表達式設置好之后,單擊OK,可以繼續添加需要的數據。
4.選擇intruder——》start attack   開始轉去數據,在數據抓取結束之后,選擇save  ——》“Result Table”,保存導出數據的界面。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM