Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверить на уязвимости 
:(
    Опции темы
SeregaGREY
Дата 9.4.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 28.7.2006

Репутация: нет
Всего: 0



Есть php-скрипт. У него вверху задаётся:
[PHP]
$setup['param_login']='login';
$setup['param_pw']='pass';

[/PHP]

и в теле:
[PHP]
function AddLinkPost() {
global $setup;
$pw = GetParametr('pw', 'post');
$login = GetParametr('login', 'post');
$linkdata = GoodVal(GetParametr('linkdata', 'post'));
if( ($login != $setup['param_login']) or ($pw != $setup['param_pw']) ){
echo 'strbeg'.'errorlogin'.'strend';
exit;
}
// Далее пошёл код
[/PHP]

Вот меня интересует могут ли кто-нибудь обойти проверку соответствия логина и пароля?

Выкладываю полную версию скрипта:
Код

<?php
error_reporting(0);
$setup['param_login']='mylogin';
$setup['param_pw']='mypass';
$addlink=GetParametr('addlink','post');
if ($addlink==1) AddLinkPost();
$dellink=GetParametr('dellink','post');
if ($dellink==1) DelLinkPost();

FindLink();

function file_put_contentz($file,$content) {
$h=fopen($file,'wb');
fwrite($h,$content,strlen($content));
fclose($h);
}

exit;

function FindLink()
{
global $setup;
$id=GetParametr('id','get');
$linkdata=file_get_contents("base/{$id}.txt");
echo Tmpl($linkdata,'template.html');
}

function DelLinkPost()
{
global $setup;
$pw=GetParametr('pw','post');
$login=GetParametr('login','post');
if (($login!=$setup['param_login'])or($pw!=$setup['param_pw']))
{
echo 'strbeg'.'errorlogin'.'strend';
exit;
}
echo 'strbeg'.'Deleted!'.'strend';
exit;
}

function AddLinkPost() {
global $setup;
$pw = GetParametr('pw', 'post');
$login = GetParametr('login', 'post');
$linkdata = GoodVal(GetParametr('linkdata', 'post'));
if( ($login != $setup['param_login']) or ($pw != $setup['param_pw']) ){
echo 'strbeg'.'errorlogin'.'strend';
exit;
}
$last=file_get_contents("base/last.txt");
$last = isset($last) ? intval($last) : 0;
$last++;
file_put_contentz("base/last.txt", $last);
file_put_contentz("base/{$last}.txt", $linkdata);
echo 'strbeg'.$last.'strend';
exit;
}

function GetParametr($name,$type)
{
global $HTTP_GET_VARS,$HTTP_POST_VARS;
if ($type=='get') $from=$_GET;
if ($type=='post') $from=$_POST;
$par=-1;
while (list($key,$val)=each($from))
{
if ($key==$name) {$par=$val;}
}
return $par;
}

function Tmpl($linkdata,$filename)
{
$fd = fopen( $filename, "r" );
$data = fread( $fd, filesize( $filename ) );
fclose( $fd );
$data=str_replace('!linkdata!',$linkdata,$data);
return $data;
}

function GoodVal($str)
{
$str=str_replace('\"','"',$str);
return str_replace("\'","'",$str);
}

?>


По не подтверждённым данным этот скрипт уже был взломан, вот только как?
PM MAIL   Вверх
awdev
Дата 9.4.2011, 18:09 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 22.11.2009

Репутация: 1
Всего: 1



Редкий ###код  smile простите за флуд
PM MAIL   Вверх
KLeonid
Дата 9.4.2011, 22:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Entropy
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 5.7.2007
Где: Shpongleland

Репутация: 1
Всего: 1



Да уж... код ужасен, спору нет smile. Тут не причину искать нужно, а просто переписать все правильно. Быстрее и надежнее будет smile.
PM MAIL   Вверх
cia
Дата 13.4.2011, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: 4
Всего: 4



Говнокода я повидал много. Но этот один из достойнейших.

Автору:
Вот это:
Код

function GetParametr($name,$type)
{
global $HTTP_GET_VARS,$HTTP_POST_VARS;
if ($type=='get') $from=$_GET;
if ($type=='post') $from=$_POST;
$par=-1;
while (list($key,$val)=each($from))
{
if ($key==$name) {$par=$val;}
}
return $par;
}


просто убило  smile 

А если попробовать так:
Код

function GetParametr($name,$type) {
  if($type=='get') if(isset($_GET[$name])) return $_GET['name']; else return -1;
  elseif($type=='post') if(isset($_POST[$name])) return $_POST['name']; else return -1;
  return -1;
}


Или ещё прще:

Код

function varPOST($name) {
  return (isset($_GET[$name]) ? $_GET[$name] : -1);
}

function varGET($name) {
  return (isset($_POST[$name]) ? $_POST[$name] : -1);
}



А если по теме... А что если я вот эту страницу открою:
http://example.com/myscript.php?id=../password
PM WWW ICQ   Вверх
SeregaGREY
Дата 13.4.2011, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 28.7.2006

Репутация: нет
Всего: 0



Цитата(cia @ 13.4.2011,  15:57)

А если по теме... А что если я вот эту страницу открою:
http://example.com/myscript.php?id=../password

ничего не происходит. открывается пустая белая страница
PM MAIL   Вверх
cia
Дата 13.4.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 15.1.2007

Репутация: 4
Всего: 4



Цитата(SeregaGREY @  13.4.2011,  16:11 Найти цитируемый пост)
ничего не происходит. открывается пустая белая страница 

Но ведь это же потенциальная дыра.
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1833 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.