sql注入可以稱得上是最臭名昭著的安全漏洞了,而sql注入漏洞也已經給整個網路世界造成了巨大的破壞。針對sql漏洞,研究人員也已經開發出了多種不同的利用技術來實施攻擊,包括非法訪問儲存在遠端資料庫中的資料、從伺服器讀/寫資料、以及通過mssql的sa賬號完成任意命令執行等等。
為了演示漏洞的利用過程,我們需要在裝置上完成以下配置:
1.web伺服器(我用的是apache);username=dsqli2.php環境
3.mysql資料庫
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 後面帶的單...