SQL注入——Less-1
宣告:本實驗教程僅供研究學習使用,請勿用於非法用途,違者一律自行承擔所有風險!!!
開啟主頁進入第一關,提示輸入引數id及它的值,
傳入引數id=1後,我們會發現這個頁面會根據傳入的id查詢到對應的使用者及使用者密碼
我們可以通過檢視資料庫進行驗證
這樣我們就可以推斷出PHP執行的SQL語句的功能是從資料庫中查詢出的資訊為我們傳入的id為1的使用者資訊,使用者名稱及密碼資訊,我們據此猜測PHP中的SQL語句可能是select username,password from ‘users’ where id=”$_GET[‘id’]”,但是我們的猜測不一定正確,因為SQL語句的執行,對語法格式有一定的要求,但是並不是特別嚴格,一條結果的查詢方法可能會有多種,還可能會因為資料庫表格內容的不同而有所差異;因此,我們如果要攻擊這個網站的話,就要想辦法猜測出這個頁面的SQL語句是如何寫的,要猜測是哪一種方式,這樣我們才能將我們自己精心構造的SQL語句注入到正常的引數中,讓我們的SQL語句可以正常執行,達到我們的目的。我們在本地的MySQL資料庫中進行SQL語句測試:select username,password from users where id=1.
我們在id=1後面多輸入一個單引號,此時會報錯,根據報錯資訊分析,PHP語句中傳入的id引數型別是字串型,所以要把前面的一個單引號閉合且還要將後面的單引號閉合或註釋掉。
將單引號註釋掉,輸入一個不可查詢的id值,我們會發現頁面顯示的是另一個我們查詢的表的內容,
此時我們就可以嘗試著拉一下我們所需要的內容了
獲得表名
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema ='security'--+
獲得欄位名
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1' union select 1,2,group_concat(username) from security.users--+
獲得所有使用者名稱
獲得所有密碼 ?id=-1' union select 1,2,group_concat(password) from security.users--+