SQL Injection Nedir ve örnekler.

Web uygulamalarında bir çok işlem için kullanıcıdan alınan veri ile dinamik SQL cümlecikleri oluşturulur.
SELECT * FROM employees .bu sorgu veritabınından bütün çalışanları döndürecektir.
Bu SQL komutunu oluşturulurken araya sıkıştırılan herhangi bir meta-karakter SQL Injection’ a neden olabilir.

SQL’ için önemli metakarakter (‘) tek tırnak’ tır. Çünkü iki tek tırnağın arası string olarak algılanır.

Genel bir web uygulamasında olası bir üye girişi işlemi formdan gelen kullanıcı adı ve şifre bilgisi ile ilgili SQL komutu oluşturulur
(SELECT * FROM employees WHERE user=’admin’ AND password=’sifre’ gibi)
SQL komutu kayıt döndürüyorsa böyle bir kullanıcının var olduğu anlamına gelir ve session açılır ve ilgili kullanıcı giriş yapmış olur.
Eğer veritabanından kayıt dönmediyse “kullanıcı bulunamadı” veya “şifre yanlış” gibi bir hata mesajı geri döndürülücekti.

SELECT * FROM employees WHERE user = ” OR ”=” AND Password = ” OR ”=”
anlaşıldığı üzere bu SQL sorgusu her zaman doğru dönecek ve çalışan tablosundaki tüm çalışanları getirecektir.

Birkaç örnek daha inceleyelim.

Select * from my_table where column_x = ‘1’

Select * from my_table where column_x = ‘1’ UNION select password from DBA_USERS where ‘q’=‘q’

bir jsp örneği
Package myseverlets;

String sql = new String(“SELECT * FROM WebUsers WHERE Username=’” + request.getParameter(“username”) + “’ AND Password=’” + request.getParameter(“password”) + “’”
stmt = Conn.prepareStatement(sql)
Rs = stmt.executeQuery()

SELECT * FROM WebUsers WHERE Username=’zekeriya’ AND Password=’çokzorpassword’

yerine

SELECT * FROM WebUsers WHERE Username=’zekeriya’ AND Password=’çokzorpassword’ OR ‘A’=‘A’ yazarsak olay bitmiş demektir. bu query her halikarda true döndürür.

Altaki örnek çok kolay bir şekilde kredi kart bilgilerine ulaşabileceğimiz durumuz gelebilir.

SELECT ProductName FROM Products
WHERE ProductCategory=’test’ UNION
select credit_card_number from
CUSTOMERS where ‘a’=‘a’

Bu iki sql komutunu union ile birleştirirsek

• Tabloların listesi
• UNION select object_name from sys.all_objects;
• Kolanların Listesi
• UNION select column_name from sys.all_tab_columns

Advertisements

About oracledocuments

Zekeriya Beşiroğlu, It joined the Bilginc IT Academy in July 2000. In the meantime, the Oracle Education, Oracle Data Base Management System and Oracle Internet Technologies, Oracle development technologies such as the training of Oracle products is responsible for training as consultants. During this task, since 1 April 2008 with 293 Oracle training in total, in 2150 Oracle customers successfully submitted. Oracle 10g New York in November 2002 have received training and education in Turkey was the first time the consultants. 20 April 2008 on education in Turkey 11g is the first who was a consultant. Oracle Real Application Cluster Expert advisor is certified is the first . Http://zekeriyabesiroglu.blogspot.com and Http://www.oracleforum.info owner and manager of the site. Its own has more than one hundred articles. In addition, creation and improvement of training materials are also related to work. Oracle products are used, database management and reporting Academy eruditely It also is working on. From the date of 1 January 2009 will continue to work as the Technical Director
This entry was posted in Uncategorized and tagged . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s