Halaman

    Social Items


SQL Injection Pada Proses INSERT


Sebelum masuk bagaimana cara untuk menginject pada proses Insert, kalian bisa download filenya di https://goo.gl/mMn6Vg
Ini adalah cara untuk menginject sesuatu dengan cara INSERT. Dengan contoh kasus yang saya berikan link di atas.

Kita akan test untuk mengirim pesan pada form kirim pesan pada contoh kasus yang saya berikan.
jika di isikan Test pada nama dan Pesan maka tidak akan masuk apa apa di dalam Guest Book.
 Untuk statement  untuk INSERT database :

- - $input1           test’, database()) - -

INSERT INTO tabel (kolom1, kolom2, kolom3)
VALUES (‘vall’, ‘test’, database()) - - ‘, ‘{$input2}’);

Program di atas adalah logika untuk statement INSERT, jika di masukkan didalam from kirim pesan

name : test’, database()) - -
pesannya : sfasfafasfasdg (pesan asal)

maka akan muncul “pesan tersimpan”


Dan berarti kita sudah benar menebak jumlah kolom pada database tersebut.
Jika ingin mengetahui nama user pada web tersebut bisa menggunakan program ini didalam from kirim pesan :

name : test’, database()) - -
pesannya : sfasfafasfasdg (pesan asal)

perbedaannya hanya pada statement setelah test’ lalu akan muncul nama user yang sesuai tertera pada web tersebut. Dan jika
Penjelasan statement

test’ =  nama dari defaultnya
database() = memanggil fungsi database dan akan muncul nama databasenya
user() = memanggil fungsi user dan akan muncul nama usernya

Cara untuk mengamankan input 1 yaitu dengan mengganti dan menambahkan beberapa program berikut ini pada gbpost.php :

<?php
Session_start();
Include ‘koneksi.php’;

$nama = mysqli_real escape_string($conn, $_POST[‘nama’]);
$pesan = $_POST[‘pesan’];

$insert = mysqli_query($conn, “INSERT INTO guestbook (id, tanggal, nama, pesan) VALUES(NULL, NOW(), ‘{$nama}’, ‘{$pesan}’)”);

jika penggalan program sudah di edit, lalu di kirim kembali pesan yang sama dari sebelumnya maka akan ditampilkan :


Kita tidak bisa lagi menjalankan yang tadi, dan akan menampilkan data apa adanya (real) sesuai apa yang di input dalam form nama. Dan kita sudah tidak berahasil menginject kolom nama. Tapi bagaimana dengan kolom pesannya? Oke kita lanjut untuk mengamankan kolom pesan.
Tahap selanjutnya untuk input yang 1 sudah aman, maka yang harus diamankan juga di input yang kedua. Dengan logika seperti di bawah ini :

- - $input1           aman
- - $input2           test’), (NULL, database(), user()) - -

INSERT INTO tabel (kolom1, kolom2, kolom3)
VALUES (‘vall’, ‘input1’, ‘test’), (NULL, database(), user()) - - ‘);

Dan kita akan tetap bisa mendapatkan informasi dari database dengan teknik  BLIND SQL INECTION dan Time Based, jadi walaupun insert bisa juga dengan BLIND dan time based. Ini adalah statementa yang dimasukkan ke dalam form pesan:

Test’), (NULL, NOW(), (IF(database() = ‘blog’, sleep(5), 0)), user()) - -


SQL Injection Pada Proses Insert


SQL Injection Pada Proses INSERT


Sebelum masuk bagaimana cara untuk menginject pada proses Insert, kalian bisa download filenya di https://goo.gl/mMn6Vg
Ini adalah cara untuk menginject sesuatu dengan cara INSERT. Dengan contoh kasus yang saya berikan link di atas.

Kita akan test untuk mengirim pesan pada form kirim pesan pada contoh kasus yang saya berikan.
jika di isikan Test pada nama dan Pesan maka tidak akan masuk apa apa di dalam Guest Book.
 Untuk statement  untuk INSERT database :

- - $input1           test’, database()) - -

INSERT INTO tabel (kolom1, kolom2, kolom3)
VALUES (‘vall’, ‘test’, database()) - - ‘, ‘{$input2}’);

Program di atas adalah logika untuk statement INSERT, jika di masukkan didalam from kirim pesan

name : test’, database()) - -
pesannya : sfasfafasfasdg (pesan asal)

maka akan muncul “pesan tersimpan”


Dan berarti kita sudah benar menebak jumlah kolom pada database tersebut.
Jika ingin mengetahui nama user pada web tersebut bisa menggunakan program ini didalam from kirim pesan :

name : test’, database()) - -
pesannya : sfasfafasfasdg (pesan asal)

perbedaannya hanya pada statement setelah test’ lalu akan muncul nama user yang sesuai tertera pada web tersebut. Dan jika
Penjelasan statement

test’ =  nama dari defaultnya
database() = memanggil fungsi database dan akan muncul nama databasenya
user() = memanggil fungsi user dan akan muncul nama usernya

Cara untuk mengamankan input 1 yaitu dengan mengganti dan menambahkan beberapa program berikut ini pada gbpost.php :

<?php
Session_start();
Include ‘koneksi.php’;

$nama = mysqli_real escape_string($conn, $_POST[‘nama’]);
$pesan = $_POST[‘pesan’];

$insert = mysqli_query($conn, “INSERT INTO guestbook (id, tanggal, nama, pesan) VALUES(NULL, NOW(), ‘{$nama}’, ‘{$pesan}’)”);

jika penggalan program sudah di edit, lalu di kirim kembali pesan yang sama dari sebelumnya maka akan ditampilkan :


Kita tidak bisa lagi menjalankan yang tadi, dan akan menampilkan data apa adanya (real) sesuai apa yang di input dalam form nama. Dan kita sudah tidak berahasil menginject kolom nama. Tapi bagaimana dengan kolom pesannya? Oke kita lanjut untuk mengamankan kolom pesan.
Tahap selanjutnya untuk input yang 1 sudah aman, maka yang harus diamankan juga di input yang kedua. Dengan logika seperti di bawah ini :

- - $input1           aman
- - $input2           test’), (NULL, database(), user()) - -

INSERT INTO tabel (kolom1, kolom2, kolom3)
VALUES (‘vall’, ‘input1’, ‘test’), (NULL, database(), user()) - - ‘);

Dan kita akan tetap bisa mendapatkan informasi dari database dengan teknik  BLIND SQL INECTION dan Time Based, jadi walaupun insert bisa juga dengan BLIND dan time based. Ini adalah statementa yang dimasukkan ke dalam form pesan:

Test’), (NULL, NOW(), (IF(database() = ‘blog’, sleep(5), 0)), user()) - -


1 komentar: