PDA

Просмотр полной версии : Вопрос про сайт... :)


Melchior
30.08.2006, 09:59
Товарищи! Посогите! :) Я нашел патенциально бажный сайт. После 5 минут бутербродов с кофе удалось получить страницу следующего содержания:

<?
global $s;
$MaxInt = -2147483647.00;
$TEST = 1;
include("ConnectBD.php");

//--------------------------------------------

function Time_Ceil($t)
{
$result = trim( $t );
$result = str_replace( " ", " ", $result );
list( $aMonth, $aDay, $aYear, $theRest ) = explode( " ", $result, 4 );
$result = date( "H:i", strtotime("$theRest"));
if($result == '23:59' ) $result = '24:00';
return $result;
}

//--------------------------------------------
function GetDateFromSybase( $aDate , $time)
{
global $FormatDate;

if($FormatDate) {
if ($time) $result = date( "m.d.Y H:i:s", strtotime($aDate));
else $result = date( "m.d.Y", strtotime($aDate));
}
else {
if ($time) $result = date( "d.m.Y H:i:s", strtotime($aDate));
else $result = date( "d.m.Y", strtotime($aDate));
}

if( $aDate == '') $result ='';
return $result;
}
//--------------------------------------------
function db_connection()
{
global $s;

Global $precision_currency; // точность
Global $CurrencyID;
Global $CurrencyName;
Global $TrafficMeasureID;

ini_set("mssql.datetimeconvert","0");

if (!$Connect)
{
////////////////////////
include("ConnectBD.php");
/////////////////////////
}
if (!$Connect)
{
$num_err=101;
$error="MSSQL: Unable to allocate connection";
ErrorLog($num_err, $error);
}
else
{
$sql=" exec CurrencyReportGet";

// получим данные настройки
$buf = get_rows(db_query($sql,$Connect));
$precision_currency = $buf[0][Prec];
$CurrencyID = $buf[0][BaseCurrencyID];
$CurrencyName = $buf[0][BaseCurrencyCode];
$TrafficMeasureID = $buf[0][TrafficMeasureID];
}
return $Connect;
}
//------------------------------------------------------------
function ErrorLog($num_err, $error)
{
$current=date('d M,Y G:i:s');
$file=fopen('../error.log','a');
if ($file)
{
fputs($file, "$current - $num_err : $error\n");
fclose($file);
}
}

//---------------------------------------------
function db_query($string,$Connect)
{
// выполнение запросов к базе
// $string - SQL запрос
`echo $string >>/www/stat/include/.tmp`;
$result = mssql_query($string, $Connect);
return ($result);
}

function get_rows ($result)
{
// формирование списка значений, возвращаемых из базы после выполнения query
// возвращает массив строк

$row=array();
$row_b=array();
$row_name=array(); // имена полей из базы
$row_real=array(); // 1 если дробное число 0 - если нет

$count_field = @mssql_num_fields($result); // количество полев в ответе

for($i=0;$i<$count_field;$i++)
{
$obj = mssql_fetch_field($result,$i);
$row_name[$i] = $obj->name; // имена полей
if($obj->type == 'real' || $obj->type == 'money') $row_real[$i]=1;
else $row_real[$i]=0;
}

while($row_b = @mssql_fetch_array($result))
{
for($i=0;$i<$count_field;$i++) // округлим все цифровые поля
{
if($row_real[$i])
{

$row_b[$i] = str_replace(',','.',$row_b[$i]);
$row_b[$row_name[$i]] = round($row_b[$i],7);
settype($row_b[$row_name[$i]],"string");
}
}
$row[]=$row_b;
}
@mssql_free_result($result);

return ($row);
}

//---------------------------------------------------------------------------
function db_disconnect ($Connect)
{
// отменим выбранный язык
$sql=" exec UnregisterLang";
db_query($sql,$Connect);

// disconnects from the database
return (mssql_close($Connect));
}

//--------------------------------------------------------------------------
function ClientIDGet()
{
global $s;
global $HTTP_POST_VARS;
global $HTTP_SESSION_VARS;
global $FIO;

if ( $HTTP_POST_VARS[login] != '' && $HTTP_POST_VARS[password] != '')
{
$magicnumber = substr(md5(UniqID(GetMyPid())), 0, 20);
$l = 1;
$sql = "exec ClientIDGet
@Login = '$HTTP_POST_VARS[login]',
@Password = '$HTTP_POST_VARS[password]',
@MagicNumber = '$magicnumber'
";
}
else
$sql="exec ClientIDGet @MagicNumber = '$HTTP_SESSION_VARS[MagicNumber]' ";

$CC = db_connection();
$buf= get_rows(db_query($sql,$CC));
db_disconnect($CC);

if ($buf[0][ClientID] && $magicnumber )
{
session_start();
if (!session_is_registered('MagicNumber'))
{
session_register("MagicNumber");
$GLOBALS[MagicNumber] = $magicnumber;
unset($HTTP_POST_VARS[login]);
unset($HTTP_POST_VARS[password]);
}
}
$FIO = $buf[0][FIO];
return($buf[0][ClientID]);
}
//-----------------------------------------------------
function ShablonGet($name)
{
$fn = "shablons/$name.html";
$fd = fopen( $fn, "r" );
$cont = fread( $fd, filesize( $fn ) );
fclose( $fd );
return($cont);
}

//---------------------------------------------------------


// set_time_limit(0);

// if (!$SessionNO) session_start();
//
// $ClientID = ClientIDGet();
// if((isset($mod) && ereg('#'.$mod.'#',$auth_list)) && !$ClientID ) $NoAnonimus=1;
// else $NoAnonimus=0;
// if ($FIO == '') $FIO= "Анонимус :)";


?>

Это файл вообще чем нибудь полезен? :) Я там чтото ничего не вижу толкового... Или просто не правильно мыслю? :)

Berlay
30.08.2006, 10:05
Попробуй получить ConnectBD.php темже способом. Мож повезет.

Melchior
30.08.2006, 10:16
Попробуй получить ConnectBD.php темже способом. Мож повезет.
Не выходит... Я уже пробывал... :D

Berlay
30.08.2006, 10:27
Попробуй поискать sql инекции
function db_query($string,$Connect) {
// выполнение запросов к базе
// $string - SQL запрос
`echo $string >>/www/stat/include/.tmp`;
$result = mssql_query($string, $Connect);
return ($result); }
Фильтрации никакой вроде как.

k1b0rg
30.08.2006, 11:32
логин и пароль не фильтруються