如何通過SQL注入獲取伺服器本地檔案

2022-06-23 07:00:12 字數 3291 閱讀 7680

sql注入可以稱得上是最臭名昭著的安全漏洞了,而sql注入漏洞也已經給整個網路世界造成了巨大的破壞。針對sql漏洞,研究人員也已經開發出了多種不同的利用技術來實施攻擊,包括非法訪問儲存在遠端資料庫中的資料、從伺服器讀/寫資料、以及通過mssql的sa賬號完成任意命令執行等等。

為了演示漏洞的利用過程,我們需要在裝置上完成以下配置:

1.web伺服器(我用的是apache);

2.php環境

3.mysql資料庫

username=dsqli 

password=icadsqli

and database name = dsqli

為了建立資料庫,使用者必須要有資料庫的讀許可權,請大家按照下面的步驟進行操作。

首先以root賬號登入mysql的終端控制台,然後用下面的語句建立乙個新的資料庫:

create database dsqli;

然後建立新使用者「dsqli」,密碼為「icadsqli」,並賦予資料庫dsqli的讀/寫許可權:

grant all on dsqli.* to dsqli@localhostidentified by 'icadsqli';

當你設定好了資料庫和使用者賬號之後,直接將據庫檔案dsqli.sql匯入到dsqli資料庫中。匯入成功之後,資料庫中將會出現乙個表:

i) download (列名為id、image_name、location)

首先,我們要確定目標web應用是否存在基於整型的sql注入漏洞或基於字串的sql注入漏洞。確定之後,我們還要確定sql語句所查詢的表中有多少列。

在我們給出的樣本中,web應用存在基於整型的sql注入漏洞。

確定表中有多少列:

現在,我們可以嘗試用order by字句列舉出列數量。

現在,向語句中注入引數『order by 5–』

從上圖中可以看到,我們剛才的語句導致頁面出現了錯誤,接下來嘗試一下『order by 3』:

現在既然我們已經確定了表中的列數量,接下來我們就要找到那個允許我們定義檔案路徑的列。我們需要將檔案路徑的十六進製制依次填入語句的列編號之中,直到我們找到了目標列為止。

修改之前的查詢語句如下:

page index.php

post parameters

image=1 union select 1,2,3--&image_download=download

修改之後的查詢語句如下:

不幸的是,web應用彈出了錯誤資訊,這意味著我們選錯了乙個列。接下來用第二列試一下。修改後的請求如下:

還是沒有成功,那麼第三列應該沒問題了吧?修改後的請求如下:

page index.php

post parameters

image=1337 union select 1,2,0x2f6574632f706173737764-- &image_download=download

image=1&image_download=download

將『image』引數修改為陣列型別之後,請求如下:

image=1&image_download=download

從SQL注入到進入伺服器

攻擊機ip 192.168.1.3 靶機ip 192.168.1.6 首先,我們使用dirb命令和nmap進行掃瞄發現了以該ip為url的 仔細搜尋該頁面發現個admin欄,點選發現了乙個登陸頁面 然後我們使用owasp zap掃瞄器掃瞄該 那麼我們開始掃瞄這個 吧!發現如下漏洞 既然存在sql注入...

C 獲取sql伺服器列表

由於用 sqldmo在有些機器上報錯,這樣只能找c 中的類實現,在sql命名空間下有個 sqldatasourceenumerator類,它的instance屬性返回乙個表。這個表中有一列是sql伺服器的名。以下方法返回乙個陣列把它們放到toolstriptextbox1就可以了。using sys...

nginx伺服器防sql注入與溢位

不可能是全完美的,動態網頁在實用中難免會遇到sql注入的攻擊。而通過nginx的配置過濾,可以很好的避免被攻擊的可能。sql注入攻擊一般問號後面的請求引數,在nginx裡用 query string表示 一 特殊字元過濾 例如url plus list.php?tid 19 mid 22 後面帶的單...