PHP помогите найти и исправить уязвимость)

Mr.Ory

Флудир йа
Старейшина
Репутация
имеется файлик , запрос к которому вида
PHP:
?name=EatShit&city=123%20union%20select%20name%20from%20sw_users%20where%20sleep(3)
, роняет нахрен сервак ...

PHP:
$id = 0;
$SQL="select npc,id,pic,name,clas,sex,race,h_up,s_up,str,dex,intt,wis,con,exp,level,gold,city,ingame,rating,inf_wep,inf_dev,inf_history,age,city,city_rank,typ,typ_num,typ2,typ2_num,typ3,typ3_num,heal,def1,def2,ban,ban_for,online,emune,clan,avtorizate,pic_server from users where upper(up_name)=upper('$name') limit 0,1";
$row_num=SQL_query_num($SQL);
while ($row_num){
    $npc=$row_num[0];
    $id=$row_num[1];
    $pic=$row_num[2];
    $name=$row_num[3];
    $clas=$row_num[4];
    $s=$row_num[5];
    $race=$row_num[6];
    $h_up=$row_num[7];
    $s_up=$row_num[8];
    $str=$row_num[9];
    $dex=$row_num[10];
    $int=$row_num[11];
    $wis=$row_num[12];
    $con=$row_num[13];
    $exp=$row_num[14];
    $level=$row_num[15];
    $gold=$row_num[16];
    $city=$row_num[17];
    $ingame=$row_num[18];
    $rating=$row_num[19];
    $inf_wep=$row_num[20];
    $inf_dev=$row_num[21];
    $inf_his=$row_num[22];
    $age=$row_num[23];
    $city=$row_num[24];
    $city_rank=$row_num[25];

    $ntyp=$row_num[26];
    $ntyp_num=$row_num[27];
    $ntyp2=$row_num[28];
    $ntyp2_num=$row_num[29];
    $ntyp3=$row_num[30];
    $ntyp3_num=$row_num[31];
    $nheal=$row_num[32];
    $def1=$row_num[33];
    $def2=$row_num[34];
    $ban=$row_num[35];
    $ban_for=$row_num[36];
    $online=$row_num[37];
    $emune=$row_num[38];
    $clan=$row_num[39];
    $auth=$row_num[40];
    $server=$row_num[41];

    $row_num=SQL_next_num();
}
if ($result)
mysql_free_result($result);

if ($s == 1)
    $sex = 'Мужской';
else
    $sex = 'Женский';

if (strlen($clas) > 25)
    $clas=substr($clas,0,25);
if ($city <> 0)
{
    $SQL="select name from city where id=$city";
    $row_num=SQL_query_num($SQL);
    while ($row_num){
        $cname=$row_num[0];
        $row_num=SQL_next_num();
    }
    if ($result)
    mysql_free_result($result);

    if ($city_rank  <> 0)
    {
        if ($city_rank == 1)
            $cit_name = "Мэр города";
        else
        {
            $SQL="select name from position where id=$city_rank and city=1";
            $row_num=SQL_query_num($SQL);
            while ($row_num){
                $cit_name=$row_num[0];
                $row_num=SQL_next_num();
            }
            if ($result)
            mysql_free_result($result);
        }
    }
   }
else
{
    $cname = "Нет";
}
$clan_name = '';
if ($clan <> 0)
{
    $SQL="select name from clan where id=$clan";
    $row_num=SQL_query_num($SQL);
    while ($row_num){
        $clan_name=$row_num[0];
        $row_num=SQL_next_num();
    }
    if ($result)
    mysql_free_result($result);
}
 
если признаешь что ты дно которое ставит - к репутации без причины я тебе помогу решить проблему
 
Это иньекция.. нада санитарно санитировать все входные переменные
 
1) 2018 год на дворе, а вы всё не перестаете юзать mysql_ драйвер, который уже давно удален и не имеет поддержки.
2) Ладно, хрен бы с ним, что проект имеет 3 млрд кода и всё взять и переписать за много прошедших лет нет времени, но фильтровать данные можно?
Пришел $_GET параметр
Ну присвой ты числу целочисленное значение, строка пришла? ну так удали лишние символы, пробелы, ограничь количеством данных (обрезая лишнее)
Юзай mysql_real_escape_string.
[DOUBLEPOST=1518987711,1518987594][/DOUBLEPOST]Хотя бы так. Азы господа.
PHP:
mysql_query("SELECT `id`, `name` FROM `table` WHERE `id`='".(int)$_GET["id"]."' LIMIT 1") OR die ( mysql_error() );
 
Если где-то на собеседовании на работу, предоставить такой код, то можно получить много пинков под зад и жестокий смех (плевки) в лицо)
Интересно сколько памяти сжирает такой код...
 
Хабиля поржет и отпинает интервьюиров которые смотрят на код принесенный кандидатом

Не ну а чо на ГитХабе, репозиторий
с наибольшим кол-вом звезд, выбери
и выдерни из него кусок кода


Ваааууу Ах*нный
Кодер!!!


...
 
Если где-то на собеседовании на работу, предоставить такой код, то можно получить много пинков под зад и жестокий смех (плевки) в лицо)
Интересно сколько памяти сжирает такой код...
Я конечно, не в тему, но Гоферам привет!
 
Хабиля поржет и отпинает интервьюиров которые смотрят на код принесенный кандидатом

Не ну а чо на ГитХабе, репозиторий
с наибольшим кол-вом звезд, выбери
и выдерни из него кусок кода


Ваааууу Ах*нный
Кодер!!!


...
Если способен с гитхаба выдрать нужный кусок кода и запустить его - принят епта)
 

Не, ни*я...
 
Сверху