Обход str_replace для sql inj

Discussion in 'Песочница' started by Dima X, 26 Jun 2012.

  1. Dima X

    Dima X Member

    Joined:
    14 Dec 2008
    Messages:
    28
    Likes Received:
    13
    Reputations:
    0
    Итак, есть такой вот код

    PHP:
    <?
    ...

    $_GET['var']=str_replace("'","",$_GET['var']);

    mysql_query("SELECT any FROM table WHERE field= '".$_GET['var']."'");

    ...
    ?>
    Уязвимость найдера методом подставления ?var=text\

    Получается ошибка
    Code:
    1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''text\'' at line 1 in: 
    [SELECT any FROM table WHERE field= 'text\']
    Как можно выйти за пределы кавычек в запросе, с учётом того, что в $_GET['var'] она удаляется?
     
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,581
    Likes Received:
    1,317
    Reputations:
    1,557
    Как можно поставить кавычку, если поставить кавычку нельзя?


    upd:
    PHP:
    ...
    bool mozhno_postavit_kavychku false;
    bool vihod_za_predely_stroki mozhno_postavit_kavychku;
    return 
    vihod_za_predely_stroki;
    ...
     
    #2 M_script, 26 Jun 2012
    Last edited: 30 Jun 2012
  3. Dima X

    Dima X Member

    Joined:
    14 Dec 2008
    Messages:
    28
    Likes Received:
    13
    Reputations:
    0
    Да, именно такой вопрос!
     
  4. dronozavr

    dronozavr New Member

    Joined:
    3 Jul 2012
    Messages:
    16
    Likes Received:
    0
    Reputations:
    0
    попробуй %27
     
  5. Cennarios

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

    Joined:
    13 Jul 2008
    Messages:
    378
    Likes Received:
    179
    Reputations:
    108
    Если принять к рассмотрению данный конкретный код, то не получится. Надо чтобы url-encode символы переходили urldecode после str_replace.