Anti-armenia.ORG - Forumlar - PHP Login Panel!



Istifadəçi
    2014-11-19 10:58 GMT                 

Cahangir25



Informatix
Mesaj Sayı : 1142
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   91  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : PHP
Ölkə :
Məslək : Front-end Web Developer
Yaş :
Mesaj :

Mövzunu Paylaş!


Salamlar .. Bu mövzuda , PHP`da necə login panel düzəldəcəyinizi , $_SESSION[] - un məntiqini göstərməyə çalışacam ..
Deməli İlk öncə SQL bazada işlərimizi görək ..


SQl bağlantı (db.php) :
Kod:
$host = "host";
$user = "MySQL User";
$password = "MySQL Password";  // Əgər şifrə yoxdursa boş buraxın ..
$database = "Database adi" ;
/////////////////////////
$connect = mysql_connect($host , $user , $passsword) or die ("Baglantida problem!");
$selectDB = mysql_select_db($database,$connect) or die ("db-da problem!");
/code]
Bu SQL bağlantı faylımız .. indi isə Login page (login.php) - yaradaq ..
login.php :

Kod:
<?php
//////////////////////
include("db.php");
@session_start();
@ob_start();
/////////////////////
if(isset($_SESSION["user"])){
  echo " iki defe login harda gormusen ?))) ";
}else{

echo '<form method="POST">
<input type = "text" name = "admuser"></br>
<input type = "text" name = "admpass"></br>
<input type="submit" value = "Giris!">';

$username = mysql_real_escape_string(trim(strip_tags($_POST["admuser"])));   //XSS ve SQl INj qarsini aldiq //
$password = mysql_real_escape_string(trim(strip_tags($_POST["admpass"])));  //XSS ve SQl INj qarsini aldiq //


$sqlemr = mysql_query("SELECT * FROM admin WHERE username='$username' && password='$password'");
$neticesay = @mysql_num_rows($sqlemr );
if($neticesay>0){
$_SESSION["admin"] = true ;
$_SESSION["username"] = $username ;
$_SESSION["password"] = $password ;

}
}


?>

Login - hissəsi bitdi .. İndi guyaki hansısa bir səhifə var .. Və siz bu səhifəni ancaq qeydiyytlıların görməsini istəyirtsiz ..
Bunun üçün , həmin səhifədə Session_start() ? ob_start() -dan sonra bunu yazırıq .. :

Kod:
if(isset($_SESSION['user'])){
echo " xosh gorduk , $username !"
}else{
echo "FuckLamer!" ;
}


Diqqət edinki , həmişə admin fayllarında $_SESSON[] - yoxlayasız .. Yəni tutaqki , adminin belə bir faylı var : upload.php
Link admin/upload.php .. Siz burda SESSİON yoxlamasaz , attacker üçün bu səhifəni görmək üçün admin şifrəsi lazım deyil ..
Məsəlçün , guya mən hosta admin.upload.php atmışam .. Siz /admin yazanda login page gəlir amma admin/upload.php yazanda birbaşa upload səhifəsin ə gedirsiz və deface ..


İşinizə yaradısa +1 Rep!

AZERBAIJAN!!! FUCK armenia!!!
Anti-armenia.ORG
    

Istifadəçi
    2014-11-19 11:17 GMT                 

0rkh4n



Designer
Mesaj Sayı : 1007
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   109  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Baki
Ölkə :
Məslək : 💻
Yaş :
Mesaj :

Mövzunu Paylaş!


Təşəkkürlər

LIVE FREE OR DIE
Anti-armenia.ORG
    

Istifadəçi
    2014-11-19 11:48 GMT                 

PuN!Sh3r



Gold
Mesaj Sayı : 308
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   35  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : W00t W00t
Ölkə :
Məslək : Cyber Security Specialist
Yaş :
Mesaj :

Mövzunu Paylaş!


Sitat
#44037 Cahangir25 :
Salamlar .. Bu mövzuda , PHP`da necə login panel düzəldəcəyinizi , $_SESSION[] - un məntiqini göstərməyə çalışacam ..
Deməli İlk öncə SQL bazada işlərimizi görək ..


SQl bağlantı (db.php) :
Kod:
$host = "host";
$user = "MySQL User";
$password = "MySQL Password";  // Əgər şifrə yoxdursa boş buraxın ..
$database = "Database adi" ;
/////////////////////////
$connect = mysql_connect($host , $user , $passsword) or die ("Baglantida problem!");
$selectDB = mysql_select_db($database,$connect) or die ("db-da problem!");
/code]
Bu SQL bağlantı faylımız .. indi isə Login page (login.php) - yaradaq ..
login.php :

Kod:
<?php
//////////////////////
include("db.php");
@session_start();
@ob_start();
/////////////////////
if(isset($_SESSION["user"])){
  echo " iki defe login harda gormusen ?))) ";
}else{

echo '<form method="POST">
<input type = "text" name = "admuser"></br>
<input type = "text" name = "admpass"></br>
<input type="submit" value = "Giris!">';

$username = mysql_real_escape_string(trim(strip_tags($_POST["admuser"])));   //XSS ve SQl INj qarsini aldiq //
$password = mysql_real_escape_string(trim(strip_tags($_POST["admpass"])));  //XSS ve SQl INj qarsini aldiq //


$sqlemr = mysql_query("SELECT * FROM admin WHERE username='$username' && password='$password'");
$neticesay = @mysql_num_rows($sqlemr );
if($neticesay>0){
$_SESSION["admin"] = true ;
$_SESSION["username"] = $username ;
$_SESSION["password"] = $password ;

}
}


?>

Login - hissəsi bitdi .. İndi guyaki hansısa bir səhifə var .. Və siz bu səhifəni ancaq qeydiyytlıların görməsini istəyirtsiz ..
Bunun üçün , həmin səhifədə Session_start() ? ob_start() -dan sonra bunu yazırıq .. :

Kod:
if(isset($_SESSION['user'])){
echo " xosh gorduk , $username !"
}else{
echo "FuckLamer!" ;
}


Diqqət edinki , həmişə admin fayllarında $_SESSON[] - yoxlayasız .. Yəni tutaqki , adminin belə bir faylı var : upload.php
Link admin/upload.php .. Siz burda SESSİON yoxlamasaz , attacker üçün bu səhifəni görmək üçün admin şifrəsi lazım deyil ..
Məsəlçün , guya mən hosta admin.upload.php atmışam .. Siz /admin yazanda login page gəlir amma admin/upload.php yazanda birbaşa upload səhifəsin ə gedirsiz və deface ..


İşinizə yaradısa +1 Rep!




Burada səhvlər var.
1. Əgər sən elə Sessiyanin set olunmadığı halda form göstərib və ardıyca da boş dəyərlərə sahib username və passı dbyə göndərirsən.
Boş boşuna db ilə niyə interaction edirsən ?
2. İnformation Disclosure var. POSTdan gələn dəyərlər type casting edilmədən birbaşa strip_tags kimi funksiyanın içinə atmısan.
3. Sessiya da admin=true kimi dəyər vermə Random nəsə əlavə et.
4. Sessiyaya plain şəkildə username və passı( Ən əsası passı ) əlavə etmək olmaz. Attacker serverdən /tmp( sessiyanın saxlanıldığı default folder)
keçərək ola bilsin, sessiyaları oxusun və boom ! User və pass açıq görəcək.Ən azı md5 şəklində at.

Vətən Sağ olsun!
Duman salamat qal, Dağ salamat qal..
Anti-armenia.ORG