رد مقتبس من code4arab
كود PHP:session_start();
if (session_is_registered(admin)) {
echo "انت المدير";
// وهنا الخصائص
}
نفس رد اخوي code4arab
لان الطريقة الاولى بتكتب جملة انت المدير و تعرض خصائصة سواء متغير الجلسة الادمن موجود او لا
والله اعلم![]()
رد مقتبس من code4arab
كود PHP:session_start();
if (session_is_registered(admin)) {
echo "انت المدير";
// وهنا الخصائص
}
نفس رد اخوي code4arab
لان الطريقة الاولى بتكتب جملة انت المدير و تعرض خصائصة سواء متغير الجلسة الادمن موجود او لا
والله اعلم![]()
__________________
حلمي ان تكون الشبكة للكل
منتديات الشبكة للكل
http://vb.llkl.net
الأخ Code4Arab عدلها
كانت
مثل حقت
الأخ
B2s
__________________
إستخدم ملفك الخاص لكتابة توقيعك
صحيح جميعكم يا اخوان الخصائي تكون بين
if (session_is_registered(admin)) {
و
}
اما اذا كان اسفل قوس الاغلاق
} هكذا يمكن لأي احد الاطلاع على الصفحه بدون تسجيل الجلسات او بالاصح تسجيل الدخول ,,,
سأحاول التفكير بثغره اصعب قليلا![]()
__________________
http://www.el7zn.com : مدونتي :)
MySmartBB : نظره واثقه نحو المستقبل
You can say FireFox is also a virus that spread around the world, deleting IE
but we all agree it's a good virus.
أخي MaaSTaaR
المثال الذي أتيت به مشكوراً ليس ثغرة بقدر كونه خطأ برمجي غير مقبول حيث سيتمكن المبرمج من اكتشاف خطأه من التجربة الأولى أو الثانية ، فليس من المعقول أن يصمم لوحة تحكم متاحة للمجميع أو دون تجربتها و تمرير بعض الأخطاء العمد عليها لتقييم عمله قبل تصديره .
آمل أن يكون تعليقي قد أضفى على هذه المساحة شيء
و إن كان ثمّة خطأ في طرحي فآمل تبيينه و توضيحه مشكورين
__________________
قل خيراً أو اصمت ..
لكن اخي العزيز هذه الثغره ممكن تكون من العجله يعني ممكن ما ينتبه لانه سجل دخول من قبل,,,
__________________
http://www.el7zn.com : مدونتي :)
MySmartBB : نظره واثقه نحو المستقبل
You can say FireFox is also a virus that spread around the world, deleting IE
but we all agree it's a good virus.
السلام عليكم
لي تعليقات بسيطة على بعض ردود الأخوة
من ناحية كود الأخ MaaSTaaR ، فأنا رأيي من رأي الصامت
باعتقادي هذه ليست ثغرة ولاتتعدى كونها خطأ منطقي ، فالثغرة هي خطأ غير واضح في الشفرة رغم صحتها برمجيا و التي لا تؤدي إلى مشكلة فنية في البرنامج ، فخطأك هذا الذي كتبته ، سيكتشفه المبرمج عندما يجرب أن يدخل إلى لوحة التحكم و يتم تسجيل الجلسة و لا يرى أي خاصية من خصائص لوحة التحكم و لا أتوقع أن المبرمج سينشر البرنامج بوجود هذا الخطأ
ملاحظة بسيطة على أخي عبد الرحمن ، $_POST و $_GET ليسا دالتين و إنما مصفوفتين متغيرتين
أعجبني الموضوع و أقدم لكم مجموعة من الثغرات و التي أتمنى أن تحلوها
هذه الثغرة خطأ شائع ولكنه في بعض الأحيان لايصبح ثغرة
كود PHP:$query = "SELECT * FROM user WHERE username='" . $username . "' AND password='" . $password . "'";
$row = mysql_query($query);
$record = mysql_fetch_array($row)
if ($record[username])
echo "تم السماح لك بالدخول";
else
die "دخول خاطئ";
// هنا يتم وضع خصائص لوحة التحكم
الثغرة التالية لاتتعلق بالشفرة ولكن الشفرة توضح موضع الخطأ
كود PHP:include("configs.class");
if ($_POST[username] == $Configs[username])
echo "عضو صحيح";
else
echo "عضو خاطئ";
هذه الثغرة موجود للأسف في العديد من البرامج التي لا تلجأ إلى المنطق و لا الحذر
كود PHP:$UsersList = array();
// المستخدمون المصرح لهم بالدخول
$UsersList[] = array("","زائر") ; // إذا كان رقم المعرف 0 فهو يعتبر زائر
$UsersList[] = array("Password1","العضو الأول");
$UsersList[] = array("Password2","العضو الثاني");
//------------------------------------------
// التحقق من المستخدم
//التحقق من صحة معرف المستخدم و ذلك بعدم كونه أكبر من 2 أو أصغر من 0
if ($_GET["UserID"] < 0 || $_GET["UserID"] > 2 || !isset($_GET["UserID"])) {
die("المعرف خاطئ");
}
// تم التحقق من صحة المعرف، يتم التحقق من كلمة المرور في حالة لم يكن العضو زائر
if ($_GET["UserID"] != 0 && $_GET[Password] != $UsersList[$UserID][0]) {
die("كلمة المرور خاطئة");
}
//-------------------------------
// هنا خصائص لوحة التحكم
// تم التحقق من كلمة المرور ، يتم إخبار المستخدم أي نوع
iif ($_GET["UserID"]) {
echo "مرحبا بك يا {$UsersList[$UserID][1]}";
} else {
echo "مرحبا بالزائر";
}
ثغرة أخيرة تعتمد على معرفة بالبيرل وبالأخص الRegular Expressions
كود PHP:$SomeText = "ذهب محمد فرأى صديقه محمد";
if ($_GET[ReplaceTo]);
$SomeText = preg_replace("/محمد/e","$_GET[ReplaceTo]",$SomeText);
echo "النص بعد الإستبدال : <BR> $SomeText";
__________________
Synchronize with the digital...
Digital World .. All invited.
PocketPC 2002 / Palm OS / J2ME Developer
أين الثغرة هنا ؟
كود PHP:if($action == "login" and $_POST['login'] And $_POST['passwd'])
{
$login=$_POST['login'];
$passwd=$_POST['passwd'];
$Query = mysql_query("Select * from users where login='$login' and passwd='$passwd' ");
$Result = mysql_fetch_array($Query);
if(!$Result)
echo "Check your password and login";
else
Header("Loaction: memberpage.php");
}
__________________
إستخدم ملفك الخاص لكتابة توقيعك
[QUOTE]رد مقتبس من PocketPC
كود PHP:$query = "SELECT * FROM user WHERE username='" . $username . "' AND password='" . $password . "'";
$row = mysql_query($query);
$record = mysql_fetch_array($row)
if ($record[username])
echo "تم السماح لك بالدخول";
else
die "دخول خاطئ";
// هنا يتم وضع خصائص لوحة التحكم
SQL-INJECTION
حيث بالإمكان تمرير قيمة $username أو $password ووضع '..
مثلاً
السكربت login.php + رجستر جلوبال = on أو تم تعريف قيمة $username و $password على أنها $_GET['username'] و $_GET['password'] يتم عمل الآتي:
http://[site]/login.php?username=<user>'<SQL_Code>
أو حتى:
login.php?username='<SQL_Code>
أو:
login.php?username=<user>&password=<pass>'<sql_code>
.... إلخ
__________________
ArabBB ... SoooooN!
الثغرة التالية لاتتعلق بالشفرة ولكن الشفرة توضح موضع الخطأ
كود PHP:include("configs.class");
if ($_POST[username] == $Configs[username])
echo "عضو صحيح";
else
echo "عضو خاطئ";
هنا لم يتم عمل die أو exit بعد طباعة عضو خاطيء.. بمعنى أي شخص يستطيع الدخول على لوحة التحكم من خلال تمرير أي username كـ POST
وهو لا يتحقق من كلمة المرور.. فقط إسم المستخدم الذي قد يكون موجوداً في الموقع.. إلخ
__________________
ArabBB ... SoooooN!
هذه الثغرة موجود للأسف في العديد من البرامج التي لا تلجأ إلى المنطق و لا الحذر
if ($_GET["UserID"] != 0 && $_GET[Password] != $UsersList[$UserID][0]) {كود PHP:$UsersList = array();
// المستخدمون المصرح لهم بالدخول
$UsersList[] = array("","زائر") ; // إذا كان رقم المعرف 0 فهو يعتبر زائر
$UsersList[] = array("Password1","العضو الأول");
$UsersList[] = array("Password2","العضو الثاني");
//------------------------------------------
// التحقق من المستخدم
//التحقق من صحة معرف المستخدم و ذلك بعدم كونه أكبر من 2 أو أصغر من 0
if ($_GET["UserID"] < 0 || $_GET["UserID"] > 2 || !isset($_GET["UserID"])) {
die("المعرف خاطئ");
}
// تم التحقق من صحة المعرف، يتم التحقق من كلمة المرور في حالة لم يكن العضو زائر
if ($_GET["UserID"] != 0 && $_GET[Password] != $UsersList[$UserID][0]) {
die("كلمة المرور خاطئة");
}
//-------------------------------
// هنا خصائص لوحة التحكم
// تم التحقق من كلمة المرور ، يتم إخبار المستخدم أي نوع
iif ($_GET["UserID"]) {
echo "مرحبا بك يا {$UsersList[$UserID][1]}";
} else {
echo "مرحبا بالزائر";
}
سوف تتحقق من إذا كان قيمة UserID الممرة لا تساوي 0 (و) قيمة Password الممرة لا تساوي الباسورد..
لكن ماذا إذا مرر فقط قيمة UserID أو جعل UserID = 0
![]()
__________________
ArabBB ... SoooooN!
ثغرة أخيرة تعتمد على معرفة بالبيرل وبالأخص الRegular Expressions
[/B][/QUOTE]كود PHP:$SomeText = "ذهب محمد فرأى صديقه محمد";
if ($_GET[ReplaceTo]);
$SomeText = preg_replace("/محمد/e","$_GET[ReplaceTo]",$SomeText);
echo "النص بعد الإستبدال : <BR> $SomeText";
هذه الثغرة أسهل ثغرة.. لكن تنفيذها أصعب بقليل..
هذه ثغرة XSS
[script.php]?ReplaceTo=<XSS_Code>
قد تستعمل لعمل هجوم DoS بحيث يتم تمرير قيم كبيرة من خلا بريمج صغير,,
لأن مفسر php سيغير القيمة,, لكن كلما زادت القيمة كلما ..
أصعب بقليل.. لأنك إذا أردت سرقة Cookies مشرف مثلاً.. فيجب ‘إعطاؤه الكود..
لكن قد تستخد لأغراض أخرى.. مثل إعطاء مستخدم VB Virus أو javaScript Virus بحيث يتم تضمينه بـ iframe ...
__________________
ArabBB ... SoooooN!
ثغرة SQL-INJECTION بإرسال POST لقيمة login مثلاً يحتوي على:رد مقتبس من selmah
أين الثغرة هنا ؟
كود PHP:if($action == "login" and $_POST['login'] And $_POST['passwd'])
{
$login=$_POST['login'];
$passwd=$_POST['passwd'];
$Query = mysql_query("Select * from users where login='$login' and passwd='$passwd' ");
$Result = mysql_fetch_array($Query);
if(!$Result)
echo "Check your password and login";
else
Header("Loaction: memberpage.php");
}
login=<user>'<SQL_CODE>
أو حتى:
login='<SQL_CODE>
نفس الشيء ينطبق على passwd
.....
هناك شيء آخر.. سوف يتم طباعة
echo "Check your password and login";
حسناً.. لكن إذا نجح
Header("Loaction: memberpage.php");
:
إذن => توجه من البداية إلى صفحة memberpage.php بدون أي لوج إن![]()
__________________
ArabBB ... SoooooN!
SQL-INJECTION
يجب استخدم stripslashes
__________________
إستخدم ملفك الخاص لكتابة توقيعك
رد مقتبس من selmah
SQL-INJECTION
يجب استخدم stripslashes
بالعكس تماماً.. يجب إستخدام addslashes() لإضافة الـ ((شرطات)) ليس لإزالتها!
__________________
ArabBB ... SoooooN!
أهههههه ......... صح![]()
__________________
إستخدم ملفك الخاص لكتابة توقيعك