обход фильтраци для xss?

Discussion in 'Песочница' started by s0llo, 30 Jul 2010.

  1. s0llo

    s0llo Banned

    Joined:
    4 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    народ прошу помочь с xss...
    как можно вывести алерт при таком php коде?(guestbook)

    PHP:
    <?php 
     
    if(isset($_POST['btnSign']))

     
       
    $message trim($_POST['mtxMessage']);
       
    $name    trim($_POST['txtName']);
       
       
    // Sanitize message input
       
    $message trim(strip_tags(addslashes($message)));
       
    $message mysql_real_escape_string($message);
       
    $message htmlspecialchars($message);
        
       
    // Sanitize name input
       
    $name trim(strip_tags(addslashes($name)));
       
    $name mysql_real_escape_string($name);
      
       
    $query "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');";
       
       
    $result mysql_query($query) or die('<pre>' mysql_error() . '</pre>' );
       

     
    ?>
    как быть с этим?
    ==============================================
    $message = trim(strip_tags(addslashes($message)));
    $message = htmlspecialchars($message);
     
    #1 s0llo, 30 Jul 2010
    Last edited by a moderator: 30 Jul 2010
  2. brain[pillow]

    brain[pillow] Active Member

    Joined:
    7 Nov 2008
    Messages:
    7
    Likes Received:
    103
    Reputations:
    74
    Никак.
     
  3. s0llo

    s0llo Banned

    Joined:
    4 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    этот код есть в тесте по xss (уровень теста 2) всего 3!
    так что проблема решимая!!!

    тест dvwa 1.6
     
  4. s0llo

    s0llo Banned

    Joined:
    4 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    ага, это так
    но в
    PHP:
    $name trim(strip_tags(addslashes($name)));
    тут все пробелы и скрипты удаляються...
    как это можно обойти?

    и еще:
    в переменную $name разрешено всего 10 символов!
     
    #4 s0llo, 31 Jul 2010
    Last edited: 31 Jul 2010
  5. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    попробуй '</pre><script>alert(1)</script>
     
  6. s0llo

    s0llo Banned

    Joined:
    4 Feb 2010
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    в $message не выйдет... там htmspecialchars мешает!
    в $name я уже описал!!!
     
    #6 s0llo, 31 Jul 2010
    Last edited: 31 Jul 2010
  7. _iks_

    _iks_ Member

    Joined:
    21 Feb 2009
    Messages:
    60
    Likes Received:
    59
    Reputations:
    61
    В том коде, что ты привел, я не вижу, что бы он обрезался. Если ограничение стоит на форму, то редактор исходников страницы тебе в помощь. Правда, возможности внедрить код я не наблюдаю всё равно.

    P.S.
    dvwa пройти невозможно, на высоких уровнях имеются непроходимые задания, и судя по всему это одно из них.
     
  8. Дирижабль

    Дирижабль [ ✯✯✯ Ядерный Суицид ✯✯✯ ]

    Joined:
    6 Jan 2010
    Messages:
    369
    Likes Received:
    346
    Reputations:
    292
    http://raz0r.name/vulnerabilities/sql-inekcii-svyazannye-s-multibajtovymi-kodirovkami-i-addslashes/
     
    #8 Дирижабль, 16 Aug 2010
    Last edited: 16 Aug 2010
  9. Charle

    Charle Member

    Joined:
    10 Aug 2010
    Messages:
    18
    Likes Received:
    5
    Reputations:
    4
    Ок, есть скрипт.
    PHP:
    mysql_connect('localhost','root','');
    mysql_select_db('bf');
    if(isset(
    $_GET['btnSign'])) 
    {  
      
       
    $message trim($_GET['mtxMessage']); 
       
    $name    trim($_GET['txtName']); 
        
       
    // Sanitize message input 
       
    $message trim(strip_tags(addslashes($message))); 
       
    $message mysql_real_escape_string($message); 
       
    $message htmlspecialchars($message); 
         
       
    // Sanitize name input 
       
    $name trim(strip_tags(addslashes($name))); 
       
    $name mysql_real_escape_string($name); 
       
       
    $query "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');"
       print 
    $query;
       
    mysql_query($query) or die(mysql_error());
        
    }  
      
    Удачи.