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」,保存導出數據的界面。
相關文章
相關標籤/搜索