|
|
|
|
<?php
define('IN_TEST', 1);
@include($_SERVER['DOCUMENT_ROOT'].'/../нескажу/нескажу.conf.php');
$defparms = array('body'=>'', 'pwd' => '');
foreach($defparms as $k => $v) $$k = isset($_REQUEST[$k])==0 ? $v :
(get_magic_quotes_gpc() ? stripslashes($_REQUEST[$k]) : $_REQUEST[$k]);
if($body != '') {
if( md5(md5($pwd)) != $hash) die('unauthorized');
echo "Code:<pre>".htmlspecialchars($body)."</pre>Result:<hr>"; eval($body);
}
echo '<form method=post>'
."<textarea name=body cols=100 rows=20>".htmlspecialchars($body)."</textarea>"
."<br /><input type=password name=pwd value='".addslashes($pwd)."' />"
."<input type=submit name=req value=Post /></form>'";
?>
|
в нескажу.con.php лежит
<?php
if(!defined('IN_TEST)) die('Hacking attempt!');
$hash = "????????????????????????????????";?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 14:39)
| | А в каком ключе анализировать? Безопасность, читабельноть? Мне не нравится использование ? : тем более двух подряд - резко запутывается код, снижается читабельность и катострафически не нравится фраза 'Hacking attempt!', так как служит маяком взломщику, что он на на правильном пути - без неё он всё-равно доступ к 'нескажу.con.php' не получит. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 14:54)
| | В смысле безопасности и удобства применения.
Читабельность основного кода намеренно снижена, чтоб не привлекать внимание к скрипту.
Впрочем, критику стиля я тоже выслушаю с благодарностью.
Собственно, первая строка в маленьком файлике не моя, а разработчиков форума phpbb. :) Это не оправдание а объяснение. А вот остальной текст - мой. | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 15:00)
| | В плане безопасности изъянов не видно, определение константы достаточно мощный метод, в плане удобства было бы хорошо при неправильном пароле тоже выводить HTML-форму для второй попытки - иначе придётся какждый раз назад возвращаться - если скриптом будут пользоваться часто - это может быть не удобно. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 15:12)
| | Что-то не так... :((( У меня в код перед выполнением попадают <br /> | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 15:28)
| | Попытка N 2
<?php
define('IN_TEST', 1);
include($_SERVER['DOCUMENT_ROOT'].'/../нескажу/нескажу.conf.php');
$defparms = array('body'=>'echo "Hello, world!"', 'pwd' => '');
foreach($defparms as $k => $v) $$k = isset($_REQUEST[$k])==0 ? $v :
(get_magic_quotes_gpc() ? stripslashes($_REQUEST[$k]) : $_REQUEST[$k]);
if($body != '')
{
highlight_string("<?php\r\n$body\r\n?>");
echo "<hr>"; if( md5(md5($pwd)) == $hash) eval($body);
}
echo "<form method=post>"
."<textarea name=body cols=100 rows=20>".htmlspecialchars($body)."</textarea>"
."<br /><input type=password name=pwd value='".htmlspecialchars($pwd)."' />"
."<input type=submit name=req value=Post /></form>";
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 15:28)
| | >Что-то не так... :((( У меня в код перед выполнением
>попадают <br />
В текстовой области имеется ввиду? | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 22:12)
| | Да. В текстовых строках внутри тестируемого примера, который неоднократно прошел через post-форму. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 22:12)
| | Может выложить сюда код без защиты? А то молчат все :( Наверное, пробуют запустить - видят, что не идет, и бросают. | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 14:39)
| | А почему испльзуется $_REQUEST вместо POST - специально? Допускается авторизация через GET-методы или cookie? | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 15:07)
| | Чтоб можно было какой-нибудь простенький код через url проверить.
Авторизовываться куками - эта мысль мне в голову не пришла. :))) | |
|
|
|