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

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

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

  #11  
Старый 14.06.2009, 01:17
Велемир
Banned
Регистрация: 19.06.2006
Сообщений: 1,239
Провел на форуме:
1469161

Репутация: 142


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

PHP код:

if ($do=="add") {

        
$ttitle=mhtml(substr($HTTP_POST_VARS["ttitle"],0,256));
        
$url=mhtml(substr($HTTP_POST_VARS["url"],0,256));
        
$email=mhtml(substr($HTTP_POST_VARS["email"],0,256));
        
$description=mhtml(substr($HTTP_POST_VARS["description"],0,2048));
        
$c1=intval($HTTP_POST_VARS["c1"]);

        
$error="";
        if (
$c1==0$error.="<LI>".$LANG["mustbecat"];
        if (empty(
$email)) $error.="<LI>".$LANG["mustbeemail"];
        if (empty(
$url)) $error.="<LI>".$LANG["mustbeurl"];
        if (empty(
$ttitle)) $error.="<LI>".$LANG["mustbetitle"];
        if (empty(
$description)) $error.="<LI>".$LANG["mustbedescription"];

        if (empty(
$error)) {
                if (
$cat["mailifnewlink"]=="yes") {
                        
mail($cat["mailifnewlinkto"],$cat["mailifnewlinksubject"],"TITLE: $ttitle\nURL: $url\n");
                        }
                
mysql_query("INSERT INTO main SET title='$ttitle', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
                require(
"template.php");
                if(
$onregister == "on")
                {
                  
$headers "From: $namesender <$emailsender>\n";
                  
mail($email,$subjbefore,html_entity_decode($templbefore,ENT_QUOTES),$headers);
                }
                
$r=mysql_query("SELECT max(lid) FROM main WHERE url='$url'") or die(mysql_error());
                
$cid=@mysql_result($r,0,0);
                print (
"<HTML><HEAD>\n");
                print (
"<META HTTP-EQUIV=refresh CONTENT='0;url=thx.php?id=$cid'>\n");
                print (
"</HEAD></HTML>\n");
                die();
                }
        } 
Скрипт: add.php

Функция: mhtml() // Самописная

PHP код:

function mhtml($t)
{
  
$t=StripSlashes($t);
  
$t=str_replace("'","'",$t);
  
$t=str_replace("\"","&quot;",$t);
  return 
$t;

Функция эта сначала убирает слэши,которые экранируют кавычки(обратные то бишь) и спецсимволы экранируются.Также заменяются символы '\' и ' на хтмл сущности.т.е. бесполезные их варианты при проведении XSS.Ладно.Зато есть инжект в INSERT запросе.

Уязвимые параметры: $email,$url,$ttitle,$description.

Почему я так решил? Проверил на локалхосте:

PHP код:

<?php

$n
=mhtml(substr($_GET["x"],0,256));
echo 
$n;


function 
mhtml($t)
{
  
$t=StripSlashes($t);
  
$t=str_replace("'","'",$t);
  
$t=str_replace("\"","&quot;",$t);
  return 
$t;
}



?>
Или я неправильно накодил,или стр реплейс не работает.Эта функция не заменяет кавычку вообще.На сервере включён magic_quotes_gpc.
 
 





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


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




ANTICHAT.XYZ