Показать сообщение отдельно

  #4  
Старый 05.07.2006, 23:22
w0lf99
Новичок
Регистрация: 05.07.2006
Сообщений: 4
С нами: 10447068

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

Решил глянуть эту уязвимость. Вот уязвимое место в коде IPB:

PHP код:
/* \forum\sources\classes\post\class_post.php */
/*-------------------------------------------------------------------------*/
    // HTML: Post Icons
    // ------------------
    // Returns the HTML for post area, code buttons and
    // post icons
    /*-------------------------------------------------------------------------*/
    
    
function html_post_icons($post_icon="")
    {
        if (
$this->ipsclass->input['iconid'])
        {
            
$post_icon $this->ipsclass->input['iconid'];
        }
        
        
$this->ipsclass->lang['the_max_length'] = $this->ipsclass->vars['max_post_length'] * 1024;
        
        
$html $this->ipsclass->compiled_templates['skin_post']->PostIcons();
        
        if ( 
$post_icon )
        {
//в следущей строке возможно исполнение кода
            
$html preg_replace"/name=[\"']iconid[\"']\s*value=[\"']$post_icon\s?[\"']/""name='iconid' value='$post_icon' checked"$html );
            
$html preg_replace"/name=[\"']iconid[\"']\s*value=[\"']0[\"']\s*checked=['\"]checked['\"]/i"  "name='iconid' value='0'"$html );
        }
        
        return 
$html;
    } 
Все бы вроде хорошо, и использовать можно ее из браузера прямо в виде ссылки, например:
hxxp://127.0.0.1/forum/index.php?act=post&do=new_post&f=2&iconid=|phpinfo ();/e%00
Но из-за конструкции preg_replace всегда перед полезным кодом вставляется еще и бяка(name='iconid' value='), которую php естественно не воспринимает. Как обойти это дело, может какая то хитрость есть в php? Если что, то можно в личку

ЗЫ С moderate.php такая же проблема.
 
Ответить с цитированием