Получение тёмной материи просто так

BSWAR

Новичок
Репутация
0 / 21
При общении с игроком нашлась дыра в коде...
описание бага:

посылаем время удержания(expeditiontime)=-3...
подробнее:
заходим http://newbs.bswar.ru/fleet.php, доходим до http://newbs.bswar.ru/floten2.php

изменяем код этой страницы (в опере называется это "посмотреть исходный код" что такое эксплорер я не знаю =) )

в строке <select name="expeditiontime" ><option value="1">1</option><option value="2">2</option></select>часов

вводим отрицательное значение, по модулю большее чем время полёта флота

Решение:

Редактируем floten3.php
находим:
Код:
if ($_POST['mission'] == 15) {
        $StayDuration    = $_POST['expeditiontime'] * 3600;
        $StayTime        = $fleet['start_time'] + $_POST['expeditiontime'] * 3600;
        } elseif ($_POST['mission'] == 5) {
        $StayDuration    = $_POST['holdingtime'] * 3600;
        $StayTime        = $fleet['start_time'] + $_POST['holdingtime'] * 3600;
            } else {
        $StayDuration    = 0;
        $StayTime        = 0;
    }

заменяем на:
Код:
if ($_POST['mission'] == 15) {
        // fix CAHA ////////antiTMza_tak
        $StayDuration    = $_POST['expeditiontime'] * 3600;
        if(($StayDuration>=3600) and ($StayDuration<=7200) and (is_numeric($StayDuration))){
        $StayTime        = $fleet['start_time'] + $_POST['expeditiontime'] * 3600;
        }else{    message ("<font color=\"red\">[b]Возникла ошибка сценария![/b]</font>", "Вы пытались взломать игру" );}
    } elseif ($_POST['mission'] == 5) {
        $StayDuration    = $_POST['holdingtime'] * 3600;
        if(($StayDuration>=3600) and ($StayDuration<=7200)and (is_numeric($StayDuration))){
        $StayTime        = $fleet['start_time'] + $_POST['holdingtime'] * 3600;
        }else{    message ("<font color=\"red\">[b]Возникла ошибка сценария![/b]</font>", "Вы пытались взломать игру");}
    } else {
        $StayDuration    = 0;
        $StayTime        = 0;
    }
 
причем тут название этот баг есть и в xgp, ты дальше смотри в код
 
в продолжении о взломе...
есть ещё одна дыра в настройках акка:
находим options.php

находим:
Код:
if (isset($_POST["db_email"]) && $_POST["db_email"] != '')
    {
добавляем:
Код:
/// CAHA
if (!preg_match("|^[^= ]+$|i",$db_email)){header("Location: index.php"); exit;}
///
это защитит вас от так называемого скрипта , который даёт полный доступ к таблице юзеров
 
[/quote]
вот это is_numeric($StayDuration) не обязательно. так как пользы 0. так как отрицательное значение также проходит проверку.
там нужна проверка на целочисленность $_POST['expeditiontime']. это даст нам полёты котоые можно фактически до секунды сделать. можно будет посылать на 1 час 5 минут и т.д.
поэтому пишем не $_POST['expeditiontime'] а floor($_POST['expeditiontime']) и также с удержанием
 

Похожие темы

Сверху