|
|
|
รบกวนสอบถามเรื่อง Version ของ PHP หน่อยครับ พอดีจะทำเรื่อง SQL Injection |
|
|
|
|
|
|
|
จำไม่ผิด php4 มันจะไม่ใส่ \ มาให้นะครับ เมื่อก่อนต้อง addslashes() ตลอด
php 5 เนี่ย เวลาตรวจสอบก็ใช้ get_magic_quotes_gpc() ดูว่า ดีฟอล มันเป็นอะไร
จริงๆ แบบ php4 มันก็ดีอยู่แล้ว แต่ php5 ทำมาเพื่อป้องกัน แต่php6 จะกลับไปใช้แบบเดิมหละมั้ง
ปัจจุบันผมต้องเอามันออกคับ \ อ่ะ
ดูนี่คับ วิธีปรับค่า (ปรับตอนรันสคริปไม่ได้คับ)
http://php.net/manual/en/security.magicquotes.disabling.php
|
|
|
|
|
Date :
2010-09-02 20:12:06 |
By :
pjgunner |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองไปปิดใน php.ini แล้วอะครับมันก็ยังใส่ให้อยู่ T T ผมใช้ Appserv 2.4.9 ซึ่งจะเป็น PHP4.4.7 อะครับ เลยไม่รู้จะทำยังไงแล้ว มันมีโอกาศที่เกิดจาก Code ไหมครับ แต่ผมดูแล้วก็ไม่น่ามีนะครับหรือว่าเกิดจากตัว phpMyAdmin ผมว่าก็ไม่น่าใช่ ช่วยดูให้หน่อยได้ไหมครับ
Form.php
<?php
session_start();
if(isset($_SESSION["user"]))
{
echo "ผู้ใช้งานปัจจุบัน ".$_SESSION["user"]."<br/>";
echo "<a href=\"logout.php\">ออกจากระบบ</a> ";
}
else
{
?>
<form method="post" action="login.php">
Username : <input type="text" name="username"><br/>
Password : <input type="text" name="password"><br/>
<input type="submit" value="login">
</form>
<?
}
?>
login.php
<?
session_start();//ติดต่อ database
$db_hostname='localhost'; //ชื่อ host
$db_username='root'; //ชื่อ user เข้า db
$db_password='admin'; //กรอกรหัสผ่าน db
$db_name="test"; //ชื่อ db ที่ เรา create ไว้
mysql_connect($db_hostname,$db_username,$db_password) or die("Unable to Connect"); // คอนเน็ตดา ต้าเบส
mysql_select_db( $db_name ); //เลือก database
$username = $_POST["username"];
$password = $_POST["password"];
$sql = "select * from members where user = '$username' and pass = '$password' ";
$result = mysql_query($sql);
echo get_magic_quotes_gpc();
echo $sql;
echo mysql_num_rows($result);
/*$rows = mysql_fetch_array($result);
$user = $rows["user"];
if(isset($user)) //พบ user ให้ เอาข้อมูลเก็บลง session
{
$_SESSION["user"] = $user;
echo "เข้าสู่ระบบเรียบร้อย<br>";
echo "ยินดีต้อนรับ คุณ " ,"$username";
}
else
{
echo "ไม่พบชื่อผู้ใช้งาน $username";
}*/
?>
<br/><a href="form.php">กลับหน้าฟอร์ม</a>
logout.php
<?
session_start();
session_destroy();
?><META HTTP-EQUIV="refresh" CONTENT="0;URL=form.php">
else
{
echo "ไม่พบชื่อผู้ใช้งาน $username";
}
?><br/>
<a href="form.php">กลับหน้าฟอร์ม</a>
แล้วพอรันออกมาได้อย่างเนี้ยออะครับ
สมมติว่าผมใส่
user > ccc
pass > b' or '1=1
มันออกมาเป็นอย่างนี้อะครับ
1select * from members where user = 'ccc' and pass = 'b\' or \'1=1' 0
1 จาก echo get_magic_quotes_gpc(); << ทั้งๆที่ผมไป Off ใน php.ini แล้วมันก็ยัง 1 อยู่ จนปัญญา T T
select * from members where user = 'ccc' and pass = 'b\' or \'1=1' จาก echo $sql; << มี \ ออโต้ให้เฉย T T เลยทดลองไม่ได้ซะที
0 จาก echo mysql_num_rows($result); << เข้าใจว่าเป็นค่า true/false อะครับ เพราะจากที่ลองถ้ามีข้อมูลตรงกันมันจะเป็น 1 แต่ตอนนั้นไปลองอีกสคริปต์นึงเป็นแบบ WWW_Authenticate อะครับ รับค่าแบบ $_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW'] อะครับ ไออันนั้น Injection ได้แต่ไม่รู้ป้องกันยังไง(ปัญหาตรงข้ามกันเลย) แล้วไอค่านี้ตอนหลังจากทำ injection เป็น 2 ด้วยก็เลย งง ว่ามันมาได้ไง
จนปัญญาแล้วจริงๆครับ T T
|
|
|
|
|
Date :
2010-09-02 21:07:41 |
By :
เศร้า |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รีสตาร์ท อาปาเช่ ยังคับ
|
|
|
|
|
Date :
2010-09-02 21:18:42 |
By :
pjgunner |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถึงเปิด magic_quote_gpc on ก็ injection ได้ครับถ้าไม่ได้ใส่ '' ให้กับตัวแปรเช่น
$sql = "SELECT* FROM tb WHERE id=".$_GET['id'];
แค่ใส่ test.php?id=0; DELETE FROM tb; ประมาณนี้ครับ
|
|
|
|
|
Date :
2010-09-02 22:11:49 |
By :
sss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรอครับ ประเดี๋ยวขอลองก่อนนะครับ
|
|
|
|
|
Date :
2010-09-02 22:16:55 |
By :
เครียด |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าใน php อาจจะยากหน่อยครับ แต่ใน asp or asp.net นี่เจอประจำครับ เคยลองไปใช้กับ app เก่า ๆ หลาย ๆ บริษัทก็เข้าได้กันจริง ๆ
|
|
|
|
|
Date :
2010-09-02 22:31:14 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รีแล้วครับ ยังเหมือนเดิม T T
|
|
|
|
|
Date :
2010-09-02 22:45:08 |
By :
เศร้า |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรือไม่ก็ช่วยบอกวิธี Injection Code ผมก็ได้คร้าบ ขอแค่ Bypass Log in พอ ขอบคุณคร้าบบ
|
|
|
|
|
Date :
2010-09-02 23:47:05 |
By :
เครียด |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หาดูตัวอย่างได้ จากพี่กู ครับ เมื่อก่อนผมก็เคยหาดู
ปัจจุบัน ไม่กลัวเลยครับ (ยกเว้นลืม escape) ถึงแม่จะไม่ escape อัตโนมัติ
|
|
|
|
|
Date :
2010-09-03 00:22:35 |
By :
pjgunner |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|