ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ_OLD > Уязвимости > Сценарии/CMF/СMS
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #181  
Старый 12.08.2009, 18:49
1ce666
Участник форума
Регистрация: 09.12.2008
Сообщений: 159
Провел на форуме:
2144019

Репутация: 214
По умолчанию

Цитата:
Сообщение от Qwazar  
Эмм, а вам не кажется что в этом поле значением является не цифра, и такой фикс не катит?
Ну я протестил и XSS небыло
 

  #182  
Старый 12.08.2009, 18:53
HAXTA4OK
Reservists Of Antichat - Level 6
Регистрация: 15.03.2009
Сообщений: 560
Провел на форуме:
4358210

Репутация: 2017


По умолчанию

что предложиш? я просто в пхп не силен на столько да вроде поставив int он вроде как все равно работает
 

  #183  
Старый 12.08.2009, 19:04
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

XSS то не проходит, но логику приложения вы нарушили, к примеру вот этот код никогда не выполнится, из-за вашего "фикса":
PHP код:
if ($returnto == "main")
header("Location: $DEFAULTBASEURL"); 
Фиксить, когда значение является строкой, можно к примеру, так:
Код:
<input type=hidden name=returnto value="<?=htmlspecialchars($_GET["returnto"])?>">
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.

Последний раз редактировалось Qwazar; 12.08.2009 в 19:21..
 

  #184  
Старый 12.08.2009, 19:08
HAXTA4OK
Reservists Of Antichat - Level 6
Регистрация: 15.03.2009
Сообщений: 560
Провел на форуме:
4358210

Репутация: 2017


По умолчанию

тока что хотел предложить htmlentities поставить

strip_tags()
htmlspecialchars()
stripslashes()
mysql_real_escape_string

еще же эти можно да?
 

  #185  
Старый 12.08.2009, 19:17
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

strip_tags() - однозначно нет.
htmlspecialchars - да.

stripslashes(), mysql_real_escape_string - вообе из другой оперы.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.
 

  #186  
Старый 12.08.2009, 19:29
HAXTA4OK
Reservists Of Antichat - Level 6
Регистрация: 15.03.2009
Сообщений: 560
Провел на форуме:
4358210

Репутация: 2017


По умолчанию

ясно
 

  #187  
Старый 12.08.2009, 19:50
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

strip_tags удаляет теги, у нее есть баги.
htmlspecialchars преобразует специальные символы в HTML сущности - тру защита от XSS.
stripslashes удаляет экранирование символов, произведенное функцией addslashes() - вообще не в тему.
mysql_real_escape_string() экранирует специальные символы в строке, используемой в SQL-запросе. Тру защита от инъ, но не XSS.
 

  #188  
Старый 12.08.2009, 23:23
1ce666
Участник форума
Регистрация: 09.12.2008
Сообщений: 159
Провел на форуме:
2144019

Репутация: 214
По умолчанию

Фикс файла usersearch.php
Найти:
PHP код:
  <td valign="middle" class=rowhead>Имя:</td>
  <td<?=$_GET['n']?$highlight:""?>><input name="n" type="text" value="<?=$_GET['n']?>" size=35></td>
Заменить на:
PHP код:
  <td valign="middle" class=rowhead>Имя:</td>
  <td<?=$_GET['n']?$highlight:""?>><input name="n" type="text" value="<?=htmlspecialchars($_GET['n'])?>" size=35></td>
Найти:
PHP код:
    $options = array("равен","выше","ниже","между");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(($_GET['rt']=="$i")?"selected":"").">".$options[$i]."</option>\n"
Заменяем на:
PHP код:
    $options = array("равен","выше","ниже","между");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(((int)$_GET['rt']=="$i")?"selected":"").">".$options[$i]."</option>\n"
Найти:
PHP код:
    <input name="r" type="text" value="<?=$_GET['r']?>" size="5" maxlength="4">
    <input name="r2" type="text" value="<?=$_GET['r2']?>" size="5" maxlength="4"></td>
Заменить на:
PHP код:
    <input name="r" type="text" value="<?=htmlspecialchars($_GET['r'])?>" size="5" maxlength="4">
    <input name="r2" type="text" value="<?=htmlspecialchars($_GET['r2'])?>" size="5" maxlength="4"></td>
Найти:
PHP код:
    $options = array("(Любой)","Подтвержден","Не подтвержден");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(($_GET['st']=="$i")?"selected":"").">".$options[$i]."</option>\n"
Заменить на:
PHP код:
    $options = array("(Любой)","Подтвержден","Не подтвержден");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(((int)$_GET['st']=="$i")?"selected":"").">".$options[$i]."</option>\n"
Найти:
PHP код:
<tr><td valign="middle" class=rowhead>Email:</td>
  <td<?=$_GET['em']?$highlight:""?>><input name="em" type="text" value="<?=$_GET['em']?>" size="35"></td>
  <td valign="middle" class=rowhead>IP:</td>
  <td<?=$_GET['ip']?$highlight:""?>><input name="ip" type="text" value="<?=$_GET['ip']?>" maxlength="17"></td>
Заменить на:
PHP код:
<tr><td valign="middle" class=rowhead>Email:</td>
  <td<?=$_GET['em']?$highlight:""?>><input name="em" type="text" value="<?=htmlspecialchars($_GET['em'])?>" size="35"></td>
  <td valign="middle" class=rowhead>IP:</td>
  <td<?=$_GET['ip']?$highlight:""?>><input name="ip" type="text" value="<?=htmlspecialchars($_GET['ip'])?>" maxlength="17"></td>
Найти:
PHP код:
    $options = array("(Любой)","Нет","Да");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(($_GET['as']=="$i")?"selected":"").">".$options[$i]."</option>\n"
Заменить на:
PHP код:
    $options = array("(Любой)","Нет","Да");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(((int)$_GET['as']=="$i")?"selected":"").">".$options[$i]."</option>\n"
Найти:
PHP код:
  <td valign="middle" class=rowhead>Комментарий:</td>
  <td<?=$_GET['co']?$highlight:""?>><input name="co" type="text" value="<?=$_GET['co']?>" size="35"></td>
  <td valign="middle" class=rowhead>Маска:</td>
  <td<?=$_GET['ma']?$highlight:""?>><input name="ma" type="text" value="<?=$_GET['ma']?>" maxlength="17"></td>
  <td valign="middle" class=rowhead>Класс:</td>
  <td<?=($_GET['c'] && $_GET['c'] != 1)?$highlight:""?>><select name="c"><option value='1'>(Любой)</option>
Заменить на:
PHP код:
  <td valign="middle" class=rowhead>Комментарий:</td>
  <td<?=$_GET['co']?$highlight:""?>><input name="co" type="text" value="<?=htmlspecialchars($_GET['co'])?>" size="35"></td>
  <td valign="middle" class=rowhead>Маска:</td>
  <td<?=$_GET['ma']?$highlight:""?>><input name="ma" type="text" value="<?=htmlspecialchars($_GET['ma'])?>" maxlength="17"></td>
  <td valign="middle" class=rowhead>Класс:</td>
  <td<?=((int)$_GET['c'] && (int)$_GET['c'] != 1)?$highlight:""?>><select name="c"><option value='1'>(Любой)</option>
Найти:
PHP код:
  $class $_GET['c'];
  if (!
is_valid_id($class))
      
$class ''
Заменить на:
PHP код:
  if (!is_valid_id($_GET['c']))
      
$class '';
  
$class = (int) $_GET['c']; 
Найти:
PHP код:
    <td valign="middle" class=rowhead>Регистрация:</td>

  <td<?=$_GET['d']?$highlight:""?>><select name="dt">
    <?
    $options 
= array("в","раньше","после","между");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(((int)$_GET['dt']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
PHP код:
    <td valign="middle" class=rowhead>Регистрация:</td>

  <td<?=$_GET['d']?$highlight:""?>><select name="dt">
    <?
    $options 
= array("в","раньше","после","между");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(((int)$_GET['dt']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Найти:
PHP код:
    <input name="d" type="text" value="<?=$_GET['d']?>" size="12" maxlength="10">

    <input name="d2" type="text" value="<?=$_GET['d2']?>" size="12" maxlength="10"></td>
Заменить на:
PHP код:
    <input name="d" type="text" value="<?=htmlspecialchars($_GET['d'])?>" size="12" maxlength="10">

    <input name="d2" type="text" value="<?=htmlspecialchars($_GET['d2'])?>" size="12" maxlength="10"></td>
Найти:
PHP код:
  <td valign="middle" class=rowhead>Раздал:</td>

  <td<?=$_GET['ul']?$highlight:""?>><select name="ult" id="ult">
    <?
    $options 
= array("ровно","больше","меньше","между");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(($_GET['ult']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
PHP код:
  <td valign="middle" class=rowhead>Раздал:</td>

  <td<?=$_GET['ul']?$highlight:""?>><select name="ult" id="ult">
    <?
    $options 
= array("ровно","больше","меньше","между");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(((int)$_GET['ult']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Найти:
PHP код:
    <input name="ul" type="text" id="ul" size="8" maxlength="7" value="<?=$_GET['ul']?>">

    <input name="ul2" type="text" id="ul2" size="8" maxlength="7" value="<?=$_GET['ul2']?>"></td>
Заменить на:
PHP код:
    <input name="ul" type="text" id="ul" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['ul'])?>">

    <input name="ul2" type="text" id="ul2" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['ul2'])?>"></td>
Найти:
PHP код:
  <td valign="middle" class="rowhead">Донор:</td>

  <td<?=$_GET['do']?$highlight:""?>><select name="do">
    <?
    $options 
= array("(Любой)","Да","Нет");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(($_GET['do']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
PHP код:
  <td valign="middle" class="rowhead">Донор:</td>

  <td<?=$_GET['do']?$highlight:""?>><select name="do">
    <?
    $options 
= array("(Любой)","Да","Нет");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(((int)$_GET['do']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Найти:
PHP код:
<td valign="middle" class=rowhead>Последняя активность:</td>

  <td <?=$_GET['ls']?$highlight:""?>><select name="lst">
  <?
  $options 
= array("в","раньше","после","между");
  for (
$i 0$i count($options); $i++){
    echo 
"<option value=$i ".(($_GET['lst']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
PHP код:
<td valign="middle" class=rowhead>Последняя активность:</td>

  <td <?=$_GET['ls']?$highlight:""?>><select name="lst">
  <?
  $options 
= array("в","раньше","после","между");
  for (
$i 0$i count($options); $i++){
    echo 
"<option value=$i ".(((int)$_GET['lst']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Найти:
PHP код:
  <input name="ls" type="text" value="<?=$_GET['ls']?>" size="12" maxlength="10">

  <input name="ls2" type="text" value="<?=$_GET['ls2']?>" size="12" maxlength="10"></td>
Заменить на:
PHP код:
  <input name="ls" type="text" value="<?=htmlspecialchars($_GET['ls'])?>" size="12" maxlength="10">

  <input name="ls2" type="text" value="<?=htmlspecialchars($_GET['ls2'])?>" size="12" maxlength="10"></td>
Найти:
PHP код:
      <td valign="middle" class=rowhead>Скачал:</td>

  <td<?=$_GET['dl']?$highlight:""?>><select name="dlt" id="dlt">
  <?
    $options 
= array("ровно","больше","меньше","между");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(($_GET['dlt']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
PHP код:
      <td valign="middle" class=rowhead>Скачал:</td>

  <td<?=$_GET['dl']?$highlight:""?>><select name="dlt" id="dlt">
  <?
    $options 
= array("ровно","больше","меньше","между");
    for (
$i 0$i count($options); $i++){
      echo 
"<option value=$i ".(((int)$_GET['dlt']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Найти:
PHP код:
    <input name="dl" type="text" id="dl" size="8" maxlength="7" value="<?=$_GET['dl']?>">

    <input name="dl2" type="text" id="dl2" size="8" maxlength="7" value="<?=$_GET['dl2']?>"></td>
Заменить на:
PHP код:
    <input name="dl" type="text" id="dl" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['dl'])?>">

    <input name="dl2" type="text" id="dl2" size="8" maxlength="7" value="<?=htmlspecialchars($_GET['dl2'])?>"></td>
Найти:
PHP код:
    <td valign="middle" class=rowhead>Предупрежден:</td>

    <td<?=$_GET['w']?$highlight:""?>><select name="w">
  <?
  $options 
= array("(Любой)","Да","Нет");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(($_GET['w']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Заменить на:
PHP код:
    <td valign="middle" class=rowhead>Предупрежден:</td>

    <td<?=$_GET['w']?$highlight:""?>><select name="w">
  <?
  $options 
= array("(Любой)","Да","Нет");
    for (
$i 0$i count($options); $i++){
        echo 
"<option value=$i ".(((int)$_GET['w']=="$i")?"selected":"").">".$options[$i]."</option>\n";
Найти:
PHP код:
    // name
  
$names explode(' ',trim($_GET['n'])); 
Заменить на:
PHP код:
    // name
  
$names explode(' ',trim(htmlspecialchars($_GET['n']))); 
Найти:
PHP код:
      $q .= ($q "&amp;" "") . "n=".urlencode(trim($_GET['n'])); 
Заменить на:
PHP код:
      $q .= ($q "&amp;" "") . "n=".urlencode(trim(htmlspecialchars($_GET['n']))); 
Найти:
PHP код:
  // email
  
$emaila explode(' 'trim($_GET['em'])); 
Заменить на:
PHP код:
  // email
  
$emaila explode(' 'trim(htmlspecialchars($_GET['em']))); 
Найти:
PHP код:
    $q .= ($q "&amp;" "") . "em=".urlencode(trim($_GET['em'])); 
Заменить на:
PHP код:
    $q .= ($q "&amp;" "") . "em=".urlencode(trim(htmlspecialchars($_GET['em']))); 
Найти:
PHP код:
  //class
  // NB: the c parameter is passed as two units above the real one
  
$class $_GET['c'] - 2
Заменить на:
PHP код:
  //class
  // NB: the c parameter is passed as two units above the real one
  
$class = (int) $_GET['c'] - 2
Найти:
PHP код:
  // IP
  
$ip trim($_GET['ip']); 
Заменить на:
PHP код:
  // IP
  
$ip trim(htmlspecialchars($_GET['ip'])); 
Найти:
PHP код:
  // ratio
  
$ratio trim($_GET['r']); 
Заменить на:
PHP код:
  // ratio
  
$ratio trim(htmlspecialchars($_GET['r'])); 
Найти:
PHP код:
      $where_is .= isset($where_is)?" AND ":"";
      
$where_is .= " (u.uploaded/u.downloaded)";
      
$ratiotype $_GET['rt']; 
Заменить на:
PHP код:
      $where_is .= isset($where_is)?" AND ":"";
      
$where_is .= " (u.uploaded/u.downloaded)";
      
$ratiotype = (int) $_GET['rt']; 
Найти:
PHP код:
          $ratio2 trim($_GET['r2']);
        if(!
$ratio2
Заменить на:
PHP код:
          $ratio2 trim(htmlspecialchars($_GET['r2']));
        if(!
$ratio2
Найти:
PHP код:
  // comment
  
$comments explode(' ',trim($_GET['co'])); 
Заменить на:
PHP код:
  // comment
  
$comments explode(' ',trim(htmlspecialchars($_GET['co']))); 
Найти:
PHP код:
  // uploaded
  
$ul trim($_GET['ul']); 
Заменить на:
PHP код:
  // uploaded
  
$ul trim((int)$_GET['ul']); 
Найти:
PHP код:
    $where_is .= isset($where_is)?" AND ":"";
    
$where_is .= " u.uploaded ";
    
$ultype $_GET['ult']; 
Заменить на:
PHP код:
    $where_is .= isset($where_is)?" AND ":"";
    
$where_is .= " u.uploaded ";
    
$ultype = (int)$_GET['ult']; 
Найти:
PHP код:
        $ul2 trim($_GET['ul2']);
        if(!
$ul2
Заменить на:
PHP код:
        $ul2 trim((int)$_GET['ul2']);
        if(!
$ul2
Найти:
PHP код:
  // downloaded
  
$dl trim($_GET['dl']); 
Заменить на:
PHP код:
  // downloaded
  
$dl trim((int)$_GET['dl']); 
Найти:
PHP код:
    $dltype $_GET['dlt'];
    
$q .= ($q "&amp;" "") . "dlt=$dltype";
    if (
$dltype == "3")
    {
        
$dl2 trim($_GET['dl2']);
      if(!
$dl2
Заменить на:
PHP код:
    $dltype = (int)$_GET['dlt'];
    
$q .= ($q "&amp;" "") . "dlt=$dltype";
    if (
$dltype == "3")
    {
        
$dl2 trim((int)$_GET['dl2']);
      if(!
$dl2
Найти:
PHP код:
    $datetype $_GET['dt'];
        
$q .= ($q "&amp;" "") . "dt=$datetype";
    if (
$datetype == "0"
Заменить на:
PHP код:
    $datetype = (int)$_GET['dt'];
        
$q .= ($q "&amp;" "") . "dt=$datetype";
    if (
$datetype == "0"
Найти:
PHP код:
    $q .= ($q "&amp;" "") . "ls=$last";
    
$lasttype $_GET['lst']; 
Заменить на:
PHP код:
    $q .= ($q "&amp;" "") . "ls=$last";
    
$lasttype = (int)$_GET['lst']; 
Найти:
PHP код:
  // status
  
$status $_GET['st']; 
Заменить на:
PHP код:
  // status
  
$status = (int)$_GET['st']; 
Найти:
PHP код:
  // account status
  
$accountstatus $_GET['as']; 
Заменить на:
PHP код:
  // account status
  
$accountstatus = (int)$_GET['as']; 
Найти:
PHP код:
  //donor
    
$donor $_GET['do']; 
Заменить на:
PHP код:
  //donor
    
$donor = (int)$_GET['do']; 
Найти:
PHP код:
  //warned
    
$warned $_GET['w']; 
Заменить на:
PHP код:
  //warned
    
$warned = (int)$_GET['w']; 
Найти:
PHP код:
  // disabled IP
  
$disabled $_GET['dip']; 
Заменить на:
PHP код:
  // disabled IP
  
$disabled htmlspecialchars($_GET['dip']); 
Найти:
PHP код:
  // active
  
$active $_GET['ac']; 
Заменить на:
PHP код:
  // active
  
$active = (int)$_GET['ac']; 
PS: Выдрано из сборки Kinokpk.

И ещё баг в usersearch.php, данные о количестве постов в комментариях съезжают влево, не вставая в ячейки таблицы!
Найти:
PHP код:
"|".($n_comments?"<a href=userhistory.php?action=viewcomments&id=".$user['id'].">$n_comments</a>":$n_comments). 
Заменить на:
PHP код:
"<td><div align=center>".($n_comments?"<a href=userhistory.php?action=viewcomments&id=".$user['id'].">$n_comments</a>":$n_comments). 

Последний раз редактировалось 1ce666; 12.08.2009 в 23:37..
 

  #189  
Старый 13.08.2009, 10:46
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

тут ты ошибаешься:

Вот это:
PHP код:
 //class
  // NB: the c parameter is passed as two units above the real one
  
$class $_GET['c'] - 2
не надо менять на вот это:
PHP код:
//class
  // NB: the c parameter is passed as two units above the real one
  
$class = (int) $_GET['c'] - 2
Т.к. математические операции предотвращают XSS. Т.е. $a = 0 + $_GET['a'] - всегда будет числом.

З.Ы.
Ну это то что бросается в глаза. Уверен в твоих фиксах есть ещё избыточные и не совсем логичные.

К примеру ты много где делаешь trim от числа, как тут:
PHP код:
$dl2 trim((int)$_GET['dl2']); 
Зачем? Тут либо ты ошибся, и разработчик ожидает в этом поле не число, то ли у разработчика руки кривые, но тогда trim можно вообще не переносить в фикс, т.к. (int) переведёт строку в число, даже если перед цифрами стоят пробелы.

З.Ы.Ы.
Вот если бы ты к каждому твоему фиксу показал пример использования XSS, то было бы понятно, что к чему
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.

Последний раз редактировалось Qwazar; 13.08.2009 в 10:56..
 

  #190  
Старый 13.08.2009, 11:11
Yuna
Познающий
Регистрация: 22.06.2009
Сообщений: 41
Провел на форуме:
47299

Репутация: 18
По умолчанию

А не проще-ли usersearch.php выкинуть наф?
+ привязать юзерские сессии к ипам т.е ип и некая хрень известная только нам и будет солью для КУКИСОВ т.е фактически мы нифелируем почти весь эффект + ну да и заблочить внешние post что-б через xss не сделали iframe что шлет post на takeprofedit.php с изменением мыла (пароль нельзя сменить не зная старого)
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ