Mengenai spasi, ada banyak metode alternatif, seperti ruang tab dan / ** / dalam database SQL, tetapi saya menemukan metode alternatif lain, yang telah diterbitkan dalam edisi 2006.7 dari "Hacker Manual". Di sini kita memilih esensi dan mari kita lihat!
Untuk pernyataan SQL, semua orang masih terbiasa dengan ruang mereka, seperti SelectIdFrom [nama]. Jika tidak ada ruang di tengah, itu menjadi selectid dari [nama], dan itu bingung! Selain metode alternatif dari beberapa ruang yang disebutkan di atas, saya menemukan bahwa menggunakan () braket juga dapat dijalankan di SQL. Misalnya, pernyataan di atas dapat ditulis sebagai pilih (id) dari [nama], dipisahkan oleh tanda kurung, dan dapat dieksekusi secara normal.
Misalnya, kami mendapatkan titik injeksi: jmdcw.asp? Name = aa'and1 = 1 dan '' = ', jika Anda mengganti pernyataan bahwa 1 = 1 adalah kata sandi administrator kueri: (selectac (mid (pass, 1,1)) dari [nama] di mana) = 1)> 49. Bagaimana cara menggunakan spasi? Sebenarnya itu bisa ditulis seperti ini:
jmdcw.asp? name = aa'and ((pilih (ASC (mid (pass, 1,1))) dari [nama] di mana (id = 1))> 49) dan '' = '
Jika simbol <dan> diblokir, gunakan antara ... dan ..., dan pernyataannya adalah:
jmdcw.asp? name = aa'and ((pilih (ASC (mid (pass, 1,1))) dari [nama] di mana (id = 1)) antara (40) dan (50)) dan '' = '
Untuk tempat -tempat di mana spasi harus muncul di tengah, gunakan () untuk menggantinya, tetapi tidak mudah digunakan untuk pernyataan SQL yang sangat kompleks. Yang disebutkan di atas adalah tipe karakter. Jika ini adalah tipe numerik, Anda dapat menambahkan braket setelah ID = 1. Namun, saya belum menguji ini, misalnya: jmdcw.asp? Id = (1) dan (pilih ......). Itu harus layak, bukan?
Haha, mari kita ringkas dan bagikan dengan teman -teman di Loveshell.