SQL手動注入解析


作者:震靈

注入環境:DVWA

探測步驟:

1、首先探測是否可以注入以及注入方式


原SQL語句為

SELECT * FROM xxx WHERE a='';

注入后為

SELECT * FROM xxx WHERE a='' or '1'='1' --;

這樣注入有常見情況有兩種用途
第一種用途是用於登錄,可以用作萬能密碼直接進入后台
第二種用途是用於查詢,若查詢出所有內容則代表可以進行注入
此處展示的是第二種用途

2、探測列數

由於接下來要采用union探測內容,而union的規則是必須要列數相同才能正常展示,因此必須要探測列數,保證構造的注入查詢結果與元查詢結果列數與數據類型相同

探測采用order by

SELECT * FROM xxx WHERE a='' ORDER BY 1;

order by 1代表按第一列升序排序,若數字代表的列不存在,則會報錯,由此可以探測出有多少列

3、探測展示位置

SELECT * FROM xxx WHERE a='' UNION SELECT 1,2 ;


並不是所有的查詢結果都會展示在頁面中,因此需要探測頁面中展示的查詢結果是哪一列的結果。上述SQL語句在本示例中展示了1,2,代表1,2列被展示在了頁面中。因此可以利用1,2列進行注入查詢。

4、探測數據庫名、表名、列名

SELECT * FROM xxx WHERE a='' UNION SELECT 1,schema_name from information_schema.schemata;

上述SQL語句是查詢數據庫名的SQL語句,查詢表名和列名的語句很類似,翻閱文檔即可。

在探測數據庫名、表名、列名的時候需要一些經驗,經驗不會影響最后的結果,但是經驗會影響注入時間。名字如Admin,User的一般有可能是與用戶有關的數據庫,可以特別關注。

5、探測用戶信息

最后一步,探測用戶信息。其實有了以前的鋪墊,探測用戶信息是一個很簡單的事情。

SELECT * FROM xxx WHERE a='' UNION SELECT User,Password FROM users ;

通過這一條數據便可以探測出所有用戶的信息

部分數據使用了MD5加密,可以復制到MD5解密網站進行解密

6、更高級的SQL注入

對於有防護措施的程序,需要采用更高級的SQL注入手段進行諸如,比如替換SQL關鍵字大小寫等手段。對於十分優秀的程序,SQL注入的意義就不大了,需要采用更高級的手段進行滲透測試。


免責聲明!

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



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