обход фильтров

Discussion in 'Песочница' started by qaz, 24 Jan 2011.

  1. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,546
    Likes Received:
    173
    Reputations:
    75
    Как обойти функцию mysql_escape_string?
     
  2. je0n

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    если в скуль-запрос передается текстовый параметр, обработанный этой функцией, то никак (насколько я знаю). Если же целочисленный - то и обходить не надо :) просто юзай инъекцию без использвания кавычек внутри запроса. Текстовые значения для запроса в этому случае можно передавать как CHAR(...).
    Вообще эта функция экранирует кавычки для скуль-запроса и еще что-то незначительное.

    P.S. некоторые кодеры, без знания дела, и целочисленные значения фильтруют этой функцией, что НЕДОПУСТИМО. Я сам из таких кодеров был :)
     
  3. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,546
    Likes Received:
    173
    Reputations:
    75
    я просто в гугле читал што ета функция пропускает какуюто кодировку и которая понятна для mysql только вот где што и как нигде не обьясняется
     
  4. je0n

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    можно линк?
     
  5. h00lyshit!

    h00lyshit! [From Nobody To Root]

    Joined:
    10 Sep 2009
    Messages:
    289
    Likes Received:
    290
    Reputations:
    195
    http://raz0r.name/vulnerabilities/sql-inekcii-svyazannye-s-multibajtovymi-kodirovkami-i-addslashes/
     
    1 person likes this.
  6. je0n

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    это очень круто, хоть и легкие дровишки можно собрать только в азии, как я понял.
    Баги для указанных функций доступны и в php последних версий?
     
  7. h00lyshit!

    h00lyshit! [From Nobody To Root]

    Joined:
    10 Sep 2009
    Messages:
    289
    Likes Received:
    290
    Reputations:
    195
    mysql_escape_string (PHP 4 >= 4.0.3, PHP 5)
    addslashes (PHP 4, PHP 5)
     
    #7 h00lyshit!, 26 Jan 2011
    Last edited: 26 Jan 2011
    1 person likes this.
  8. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    эм... хотелось бы поинтересоваться почему недопустимо?
     
  9. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,546
    Likes Received:
    173
    Reputations:
    75
    я вот только чёт не понял

    Code:
    <?php
    $_POST['username'] = chr(0xa3) .
                                  chr(0x27) .
                                  ' OR 1=1 /*';
    $_POST['password'] = 'blah';
    
    что ето в примере за chr ????


    я вот сам прбовал сделать как в примере
    вот допустим тут(писал от фонаря)
    http://mai1-ru.h2m.ru/serfing/index.php



    Code:
    <?
     session_start(); 
    
    $e = addslashes($user_login);
    $er = addslashes($user_pass);
    
    include ("dbconnect.php");
    
    $query = "SELECT `id`
                FROM `serfinguser`
                WHERE `user_name`='$e' AND `user_pass`='$er'
                LIMIT 1";
        $sql = mysql_query($query) or die(mysql_error());
    if (mysql_num_rows($sql) == 1) {
    $row = mysql_fetch_assoc($sql);
            $_SESSION['id'] = $row['id'];
    header("Location: site.php");   
    }
        else {
            die('Такой логин с паролем не найдены в базе данных.');
        }
    
    
    
    
    ?> 
    

    ничего не происходит, почему? разор в своём блоге от фонаря всё штоли пишет?
     
    #9 qaz, 26 Jan 2011
    Last edited: 26 Jan 2011
  10. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    уязвимость в мультибайтовых кодировках BIG5, EUC-JP, EUC-KR, GB2312 и SHIFT_JIS и др. utf-8 хоть и мультибайтовый, но под данную уязвимость не попадает (c)
     
  11. ~d0s~

    ~d0s~ Banned

    Joined:
    17 Apr 2010
    Messages:
    246
    Likes Received:
    257
    Reputations:
    154
    Думаю он имел ввиду,что если знаешь что должно быть число,то легче юзать преобразование типов: (int),intval,settype или например проверять is_numeric,etc...
    qaz
    Перечитай статью,ты ничего не понял.
     
  12. Seravin

    Seravin Active Member

    Joined:
    25 Nov 2009
    Messages:
    475
    Likes Received:
    190
    Reputations:
    221
    ну я например делаю так
    Code:
    "SELECT * FROM table WHERE id = '".mysql_real_escape_string($_GET['id'])."' and name = '".mysql_real_escape_string($_GET['name'])."'";
    
    id число
    name строка
     
  13. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,546
    Likes Received:
    173
    Reputations:
    75
    я уже раз 20 перечитал, серовно чёт не плучается, што я не понял?, хелп
     
  14. je0n

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    а кто-то делает так:
    PHP:
    "select * from table where id=".mysql_escape_string($_GET['id']);
    qaz
    походу БД должна быть в любой кодировке, совместимой с asci, а на сайте использоваться одна из перечисленных в статье.
    Если я правильно все это понимаю, то в таком несоответствии возможна инъекция...
     
    #14 je0n, 28 Jan 2011
    Last edited: 28 Jan 2011