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

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

  1. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    PHP - ЗАДАНИЯ ОТ Krist_ALL​



    Что это такое?
    PHP задания - это небольшие задачки по php. Вы можете из выполнять для того, чтобы попрактиковатся в php улучшить и систематизировать свои знания. За каждое выполненое задание вы получаете от меня +4 Задания практикуются в закрытых группах. В предложениях по улучшению данного раздела, я видел что несколько человек просили сделать задания. Вот я и сделал)

    Всем ли можно выполнять задания?
    Всем, но есть небольшапя просьба, профи, дайте новичкам подумать. И, те, кто состоит в закрытых группах - у вас свои задания, у нас свои. Можете конечно выполнить...Но лучше пусть выполняют люди из паблик раздела

    Можно я свои задания здесь напишу?
    Да, и я их добавлю во второй пост

    Я тупой, объясните еще раз нафига задания и кому это выгодно?
    В закрытых группах есть раздел задания - мне не дадут соврать участники закрытых групп. Там есть задания - например залить шелл на сайт, есть и задания на php! Я решил сделать задания тоже только в паблик разделе. Мне ничего не задавали, мне не требуются решения! Выполнили задание - +4 вам в репку и все.

    Откуда эти задания?
    Задания я беру из головы, иногда из интернета, иногда участники форума подбрасывают.

    Я решил 2 задания, а мне поставили плюсики как за одно задание! Почему?
    Я не могу ставить сразу 2 раза репутацию. А потом я могу забыть что вы выполнили 2 задания и что я за него не поставил репу. Вы же делаете задания не ради репутации? ;)

    Почему тема называется php задания, а тут есть задания на хак?
    PHP кодер должен знать как защитить свой скрипт. А то попадаются очень наивные кодеры, которые расчитывают что переменная не может содержать спецсимволов и значение её берётся прям из GET / POST / COOKIE без фильтрации и суётс в запрос к БД. Вариантов масса. Поэтмоу надо делать не только чтобы работало, а чтоб без отказно работало и сломать было нельзя.

    Есть ли на других сайтах такие же задания по php?
    Есть, но задания на других сайтах менее интересные и не в таком колличестве. Мне кажется задание написать гостеауху - это бред. Тут хорошие интересные задания, разного уровня сложности. Надеюсь Вам понравится! :)

    Сколько еще задания будет?
    100 а может быть и 1000) Конечно, у меня фантазия не безгранична, но я стараюсь придумывать много интересных заданий. Когда будет 100 задания я сделаю PDFку - 100 задания php :)





    Проект закрыт! Задания больше не будет. Я объясню почему.
    После смены алгоритма репутации, народ перестал решать задания, оказывается раньше люди решали задания за +++++, а ведь они еще приобретали опыт и новые знания. Но главным для них были +++++. Очень жаль. Спасибо всем , кто добавлял свои задания. Я планировал много интересных задания и книгу 100 заданий php. А сейчас заданий только 50. Может быть задания появються на другом всем известном портале. И всеже ВСЕМ респект огромный!!! :)








    -------------------------------------------------------------------------------------
    50 ЗАДАНИЙ
    -------------------------------------------------------------------------------------

    Новости:

    Проект закрыт!
    50 заданий)
    Теперь задания будут сложнее.













    ЗАДАНИЯ

    _______________________________________________________________________________________________












    Задание 001
    Составить регулярное выражение, которое поменят местами 2 слова в строке. Строка берется из GET переменной.

    Комментарий: Задание совсем простое. Для разминки)
    Ответ




    Задание 002
    Написать функцию, которая многократно, без учета регистра вырезает заданые слова. Например select,union,update или матерные слова :D
    Ответ




    Задание 003
    Генерировать 3 случайных числа в диапозоне от 1 до 10 пока сумма этих 3х чисел не будет равна 16.
    Ответ




    Задание 004
    Есть массив array(10,6,15,25,18,11,10,5,7,30). Вывести индексы тех его элементов, которые делятся на 5 без остатка.
    Ответ 1 Ответ 2



    Задание 005СПАЛИЛ GIFTS! За что ему говрим ''СПАСИБо!"
    В GET переменной передается строка вида tratata#tratata. Есть регулярка вида
    preg_match('@^\w+@',$_GET['stroka']); Как видно регуляка ищет строку с буквами, вопрос, почему true для строки tratata#tratata и false для tratata%tratata



    Задание 006
    Есть админка.
    login.php
    PHP:
    <?php
    ....


    if(isset(
    $_GET['login']) and isset($_GET['password'])) 
    {
       if(
    preg_match('#^\d$#',$_GET['password'])) {
          
    $password = (int)$_GET['password'];     }
       else 
    $password $_GET['password'];   
       
    $login $_GET['login'];

     if(
    $login == 'admin' and $password == "gg") echo 'OK'; else exit; 
    }

    ...


    ?>




    Как войти в админку не зная пароля? Логин всегда admin
    Ответ



    Задание 007 от d_x
    Скрипты выводят некоторые строки или числа, подумайте, почему именно так?
    Сложность по возрастанию.
    PHP:
    <?php
    print ((print '')<<1)+((print '')<<(((print '')<<1)+(print '')))+((print '')<<(((print '')<<1)+((print '')<<1)))+((print '')<<(((print '')<<1)+((print '')<<1)+((print '')<<1)+print ''))+((print '')<<(((print '')<<1)+((print '')<<1)+((print '')<<1)+((print '')<<1)+print ''));  
    ?>
    PHP:
    <?php
    for($i=0,$a=a;$i<=2941;$i++) 
    $a++; 
    eval(
    $a."('".++$a."');");  
    ?>
    PHP:
    <?php
    $a
    =1
    $a=$a<<7
    $a-=$a>>3
    ${
    chr($a)}=$a
    $a+=2
    $p=chr($p).chr($a); 
    $a=0151
    $p.=chr($a); 
    $a=m
    $p.=++$a.t._.r
    $p($p($p)); 
    ?>



    Задание 008
    Как обойти фильтр?
    PHP:
    <?php
    $id 
    str_ireplace('select'''$_GET['id'])
    $query mysql_fetch_array(mysql_query("select * from news where id ='$id' "));
    ?>
    Ответ




    Задание 009
    В директории 3 файла: index.php , news.inc , config.php. Надо обойти защиту от расширения и прочитать файл config.php
    PHP:
    <?php

    $f 
    = (string)@$_GET['f'];  
    $f str_replace('/'''$f);  
    $f .= '.inc;  

    if (file_exists($f)) { 
       echo htmlspecialchars(file_get_contents($f));  
                                        }  
     
    else  exit;

      
    ?>  

    Ответ



    Задание 010
    Провести sql injection
    PHP:
    <?php
    $name 
    str_replace('/**/','','str_replace(' ','',$_GET['name']));
    $query = mysql_query("select * from users where name='
    $name'"); ?>

    Ответ



    Задание 011 от d_x
    Есть строка:
    PHP:
     $str=
    383 текст с числами 5838 
    635 еще текст 001 462 
    432текст564 
    '
    ;  
    Задание:
    Написать скрипт, который все цифры в тексте заменит на их шестнадцатеричные эквиваленты, чтобы получилось так:
    PHP:
    PHP код:
     
    0x17F текст с числами 0x16CE 
    0x27B еще текст 0x1 0x1CE 
    0x1B0текст0x234  

    Запрещено использовать любые циклы.
    Ответ 1 Ответ 2



    Задание 012 от BlackSun
    Нарыть активную XSS
    PHP:
    <? // config.php 
        
    $dbhost 'localhost'
        
    $dbuser 'root'
        
    $dbpass ''
        
    $dbname 'xss'
         
        
    mysql_connect($dbhost$dbuser$dbpass) or die('Can\'t connect to MySQL server.'); 
        
    mysql_select_db($dbname) or die('Can\'t select db.'); 
    ?>
    PHP:
    <? // index.php 
        
    include('config.php'); 

        function 
    callback($text
        { 
            return 
    html_entity_decode($text[0]); 
        } 
         
        function 
    parse_bb($text
        { 
            
    $text str_replace('"'''$text); 
            
    $text str_replace("'"''$text); 
            
    $text htmlspecialchars($text); 
            
    $text str_replace("\r\n"'<br>'$text); 
             
            
    $bb = array('[B]' => '<b>''[/B]' => '</b>''[U]' => '<u>''[/U]' => '</u>'
                        
    '[I]' => '<i>''[/I]' => '</i>''[CENTER]' => '<center>''[/CENTER]' => '</center>'
                        
    '[MAIL=(' => '<a href="mailto:'')MAIL]' => '">''[/MAIL]' => '</a>'
                        
    '[HREF=(' => '<a href="'')HREF]' => '">''[/HREF]' => '</a>'
                        
    '[IMG]' => '<img border="0" src="''[/IMG]' => '">''[HR]' => '<hr>'); 
                         
            foreach (
    $bb as $code => $replace
            { 
                
    $text str_replace($code$replace$text); 
            } 

            
    $text preg_replace_callback('#"(.*?)"#''callback'$text); 
             
            return 
    $text
        } 
         
        if (isset(
    $_POST['name']) && isset($_POST['text'])) 
        { 
            
    mysql_query('INSERT INTO gb (`name`, `text`) VALUES (\''.addslashes(htmlspecialchars($_POST['name'])).'\', \''.parse_bb($_POST['text']).'\')'); 
            
    header('Location: index.php'); 
            die(); 
        } 
    ?> 
    <html> 
    <head> 
        <title>Active XSS</title> 
        <style type="text/css"> 
            html { 
                background-color: #e6e6e6; 
            } 
            body { 
                font-family: Verdana, Arial, sans-serif; 
                font-size: 12px; 
                margin: 10px; 
                border: 1px solid #d0d0d0; 
                background-color: #f6f6f6; 
                padding: 10px; 
            } 
            #text { 
                border: 1px solid #999; 
                background-color: f6f6f6; 
                color: #000; 
                font-family: Verdana, Arial, sans-serif; 
                font-size: 12px; 
            } 
            #input1 { 
                border: 0; 
                color: #000; 
                width: 100%; 
            } 
            textarea { 
                border: 0; 
                color: #000; 
                width: 100%; 
                height: 150px; 
            } 
            table { 
                font-family: Verdana, Arial, sans-serif; 
                font-size: 12px; 
            } 
            #button { 
                border: 0; 
                background-color: f6f6f6; 
                color: #000; 
                width: 99%; 
            } 
            #border { 
                border: 1px solid #999; 
                font-family: Verdana, Arial, sans-serif; 
                font-size: 12px; 
            } 
        </style> 
    </head> 
    <body> 
    <form method="post"> 
        <table border="0" cellpadding="1" cellspacing="1" width="80%" align="center"> 
        <tr> 
            <td width="100px">You name: </td> 
            <td id="border"><input type="text" name="name" value="Vasya" id="input1"></td> 
        </tr> 
        <tr> 
            <td colspan="2"> 
            <b>Allowed BB code:</b><br> 
            <ul> 
            <li><b>[B][/B] [U][/U] [I][/I] [CENTER][/CENTER] [IMG][/IMG] [HR]</b></li> 
            <li><b>[MAIL=(</b>mail@mail.ru<b>)MAIL]</b>My MAIL<b>[/MAIL]</b></li> 
            <li><b>[HREF=(</b>http://fsb-my.name<b>)HREF]</b>My Site<b>[/HREF]</b></li> 
            </ul> 
            </td> 
        </tr> 
        <tr> 
            <td colspan="2">&nbsp;</td> 
        </tr> 
        <tr> 
            <td colspan="2" align="center" id="border"> 
                <textarea name="text"></textarea> 
            </td> 
        </tr> 
        <tr> 
            <td colspan="2" align="center" id="border"><input type="submit" value="Post" id="button"></td> 
        </tr> 
        <tr> 
            <td colspan="2">&nbsp;</td> 
        </tr> 
        <tr> 
            <table border="0" cellpadding="2" cellspacing="2" width="100%" align="left" id="text"> 
            <? 
                $result = mysql_query('SELECT * FROM gb ORDER BY id DESC'); 
                if ($result) 
                { 
                    while ($row = mysql_fetch_array($result)) 
                    { 
                        ?> 
                        <tr> 
                            <td><?=$row['name'];?> ОХЬЕР:</td> 
                        </tr> 
                        <tr> 
                            <td><?=$row['text'];?></td> 
                        </tr> 
                        <tr> 
                            <td align="center"><font color="Gray">---------</font></td> 
                        </tr> 
                        <? 
                    } 
                } 
            ?> 
            </table> 
        </tr> 
        </table> 
    </form> 
    </body> 
    </html>
    Code:
    CREATE TABLE IF NOT EXISTS `gb` (
      `id` int(11) NOT NULL auto_increment,
      `name` text NOT NULL,
      `text` text NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM;
    
    
    
    Ответ



    Задание 013
    Войти в панель администрирования, используя sql injection . В БД не лезть. Обмануть проверку просто.
    PHP:
    <?php // Login.php
    ....
    $query "select * from admin where pass = '$_POST['pass']' and login = '$_POST['login']'";


    ?>
    Ответ



    Задание 014
    Составить регулярное выражение, которое заменяет на лету
    набор букв на мд5(от букв). Пример: 44ffff385dddd55
    заменить на 44 (хешь от ffff) 385 (хешь от dddd) 55
    Ответ



    Задание 015
    Какое число будет записано в переменую id при регистр глобал ON, и объяснить ПОЧЕМУ.
    POST => $id = 1
    COOKIE => $id = 2
    GET => $id = 3
    PHP:
    <?ph
    $id 
    $_REСQUEST['id'];
    ?>
    Ответ



    ЗАДАНИЕ 016 от d_x
    Есть массив:
    PHP:
    $arr=Array( 
    Array(
    'key1'=> 1'key2'=>3), 
    Array(
    'key1'=> 8'key2'=>4), 
    Array(
    'key1'=> 5'key2'=>6), 
    Array(
    'key1'=> 5'key2'=>8), 
    Array(
    'key1'=> 6'key2'=>9), 
    Array(
    'key1'=> 3'key2'=>7), 
    Array(
    'key1'=> 5'key2'=>1), 
    Array(
    'key1'=> 2'key2'=>2), 
    Array(
    'key1'=> 0'key2'=>0), 
    Array(
    'key1'=> 2'key2'=>5
    );  
    Написать функцию для его сортировки, чтобы можно было отсортировать этот массив, например, по ключам key1 по возрастанию и по ключам key2 по убыванию (нечто вроде sql - order by key1 asc, key2 desc), чтобы в результате получился такой массив:

    PHP:
    Array( 
    //все key1 - по возрастанию 
    Array('key1'=>0,'key2'=>0), 
    Array(
    'key1'=>1,'key2'=>3), 
    Array(
    'key1'=>2,'key2'=>5), //тут 
    Array('key1'=>2,'key2'=>2),  //и тут key2 - по убыванию 
    Array('key1'=>3,'key2'=>7), 
    Array(
    'key1'=>5,'key2'=>8), //аналогично тут 
    Array('key1'=>5,'key2'=>6), //тут 
    Array('key1'=>5,'key2'=>1), //и тут 
    Array('key1'=>6,'key2'=>9), 
    Array(
    'key1'=>8,'key2'=>4
    )  
    Учесть, что ключей у вложенных массивов может быть сколько угодно, самих вложенных массивов также может быть любое число.
    Ответ 1 Ответ 2



    ЗАДАНИЕ 017
    Есть строка текствоя. Нужно выделить красным слова, которые являются частью предыдущих слов. Например:
    на входе "Ламерок ламер " на выхоже
    Ламерок ламер
    Ответ



    ЗАДАНИЕ 018
    Есть 2 переменные a = 5 И b =7. Нужно чтобы $a =7 а $b = 5 , при этом не создавая новых переменных
    Ответ



    ЗАДАНИЕ 019
    $array = array(5,8,9,15,145,854,64,1,3,8,46,9999);
    Определить максимальное число, которое находится в массиве, и вывести его индекс.
    Ответ



    Задание 020 от .:Enot:.
    Предположим что у вас из интерпритатора спёрли функции implode() и join(). Напишите функцию, которая делает тоже самое что вышеупомянутые - объединяет массив в строку. Ну бинарнобезопасную обработку данных конечно можно опустить )
    Ответ



    Задание 021 от .:Enot:.
    Есть два вот таких массива:
    PHP:
    $num 5// Любая цифра 
    $array1 = array(1357911131517); 
    $array2 = array(246810);  

    В итоге должно получиться следующее:
    PHP:
    Array
            (
                [
    0] => 1
                
    [1] => 2
                
    [2] => 3
                
    [3] => 4
                
    [4] => 5
            
    )

    Array
            (
                [
    0] => 6
                
    [1] => 7
                
    [2] => 8
                
    [3] => 9
                
    [4] => 10
                
    [5] => 11
                
    [6] => 13
                
    [7] => 15
                
    [8] => 17
            
    )

    Т.е. два массива с элементами, отсортированными по возрастанию. Количество элементов в первом массиве определяется в переменной $num.
    Естественно все действия только с исходными массивами, никаких range() и т.д. Ну и главное условие, циклами пользоваться нельзя
    Ответ



    Задание 022
    У вас украли php функцию foreach(), написать ее на пхп) с использованием циклов.
    Ответ



    Задание 023
    Определить с помощью регулярки делится ли число на 10 или нет.
    Ответ



    Задангие 024
    Определить какой код выполнится быстрее и написать как вы оперделили это, а не просто мне так кажется :)
    PHP:
    for($i=0;$i<10;$i++) 
    { echo 
    '1php '; }
    PHP:
    while($i<10) {
    echo 
    'w1';
    $i +=1;
    }
    Ответ



    Задание 025
    PHP:
    if(!preg_match('#\.php$#',$_FILES['name']))
    {  
    //Загрузка файла
    }
    else exit;
    Как видно из кода, проверяется расширение, если у файла расширение не php, то он загружается на сервер. Как залить шел?
    Комментарий: Несовсем по пхп зададчка, но интересная.
    Ответ



    Задание 026
    Объяснить, почему выводит 0.
    PHP:
    $a 10;
    $b 515;
    $c 0.515;
    $d $b<=$a&&$a==$c||$b>$c?0:1;
    echo 
    $d;
    Ответ



    Зададние 027
    Чего не знал програмист, кодя этот скрипт.
    PHP:
    <?php
    $name
    htmlspecialchars($_POST['name'], ENT_COMPAT);
    mysql_query("select * from users Where name = '$name'");
    ?>
    Ответ



    Зададние 028
    Это скрипт инвайтов на одни супер пупер сайт. Надо ввести слово секретное и тогда будет доступна рега. Слова хранятся в бд. Если вы ввели слово и оно есть в бд - вы получите досутп к реге - это так задумывал горе кодер. Обойдите эту защиту.
    PHP:
    <?php
    // 
    include('connect_database.php');

    $b mysql_real_escape_string($_GET['word']);
    mysql_query("select * from private where word like '$b'");

    ?>
    Ответ



    Задание 029
    Написать скрипт зеркального отражения слов. На входе античат, на выходе тачитна - чтобы так можно было делать с любым словом.
    Ответ 1 Ответ 2



    Задание 030
    PHP:
    <?php
    $a 
    = array('cat','dog','fox');
    $b = array('Moscow','London');
    $c = array('RED');
    $d $b $a $c;
    ?>
    Что окажется в массиве $d и почему.
    Ответ 1 Ответ 2



    Задание 031
    Написать функцию определения сколько массивов содержит в себе массив. пример:
    PHP:
    $a[]   //  0 
    $a[][]  // 1
    $a[][][][][] //4

    Ответ



    Задание 032
    Написать функцию, которая на выходе даст колличество спецсимволов во входной строке.
    Ответ



    Задание 033
    PHP:
    <?php
    $a 
    = -1;
    If(
    $a == TRUE) echo 1;
    ?>
    Почему выводит 1?
    Ответ



    Задание 034
    PHP:
    <?php
    echo (int)((0.1+0.7) *10); 
    ?>
    Объяснить, почему выводит 7
    Ответ



    Задание 035 от mailbrush
    Выполнить системную комманду, не используя каких-либо функциий, кроме echo (для вывода результата).
    Ответ



    Задание 036 от mailbrush


    PHP:
    $word 'Hello';
    Вывести значение переменной $word.
    Строка "$word" в коде встречаться не должна.
    Никакой конкатезации в коде не должно быть.
    Ответ



    Задание 037 от ElterRUS
    Обойти авторизайию
    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
            { 
                
    //в админке 
            

            . . . 
    ?>
    Ответ



    Задание 038
    Написать функцию, которая делает следующее:
    на вход:
    первый аргумент - массив из чисел, например 2,8,10
    второй аргумент - слово, например underground
    на выходе - uNdeegrOuNd
    тоесть Меняем на верхний регистр те буквы, номер которых указан в массиве.
    Ответ



    Задание 039
    PHP:
    <?php
    $i 
    08;
    echo 
    $i;
    ?>
    Что выведет скрипт и почему.
    Ответ



    Задание 040
    Написать скрипт, который сделает следующее:
    Было:
    PHP:
    <?php
    $a
    [1]['a'] = 'lol';
    $a[1]['b'] = 'heh';
    $a[2]['a'] = 'gygy';
    $a[2]['b'] = 'smeh';
    ?>
    Стало
    PHP:
    <?php
    $b
    [0] = 'lol';
    $b[1] = 'heh';
    $b[2] = 'gygy';
    $b[3] = 'smeh';
    ?>
    Ответ
     
    #1 Krist_ALL, 20 Jun 2009
    Last edited: 30 Nov 2009
    16 people like this.
  2. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Задание 041
    PHP:
    <?php
    //INDEX.PHP
    $a 'hack php';
    $lamer $a;
    include(
    'sort.php');
    ?>
    Как из файла sort.php узнать, что он приинклуден в файл Index.php .if(isset($a)) не пойдет т.к. название переменных могут быть любые. Через глобалс тоже не пойдет.
    Ответ 1 Ответ 2



    Задание 042
    PHP:
    $filename str_replace('../'''$_GET['filename']);
    include(
    'pages/'.$filename);
    Подняться на директорию выше и приинклудить например файл a.php
    Ответ



    Задание 043 от HAXTA4OK
    PHP:
    <?php  
     $a 
    = (int) $_GET['a']; 
    if (
    $_GET['a'] == 1
    exit; 
    elseif(
    $a == 1
    eval (
    $_GET['b']); 
    ?>
    Вывести phpinfo(); всеми способами
    Ответ



    Задание 044
    Чем отличаются эти функции?
    PHP:
    mail()      от      mb_send_mail(), 
    strlen()   от      mb_strlen(); 


    Задание 045 от DM
    Найти уязвимость в коде.
    PHP:
    <?php 

    mysql_connect
    ('localhost''root''secretpassword'); 
    mysql_select_db('antichat'); 

    //Обработка переменных 
    function Sanitize($data_to_sanitize) { 
        
    $data_to_sanitize addslashes($data_to_sanitize); 
        
    $data_to_sanitize htmlspecialchars($data_to_sanitize); 
        return 
    $data_to_sanitize



    function 
    Sanitize_Array($value) { 
        
    $value is_array($value) ? array_map('Sanitize_Array'$value) : Sanitize($value); 
        return 
    $value


    $_SERVER  array_map('Sanitize_Array'$_SERVER); 

    $sql "INSERT INTO stats (ip, useragent, referer) 
            VALUES ('"
    .substr($_SERVER['REMOTE_ADDR'],0,16)."', '".substr($_SERVER['HTTP_USER_AGENT'],0,255)."', '".substr($_SERVER['HTTP_REFERER'],0,255)."')"

    mysql_query($sql); 
    mysql_close(); 

    ?>

    Ответ



    Задание 046
    Чем отличается $a = $i++; от $a = ++$i;
    Ответ



    Задание 047
    PHP:
    include('db_connect.php');
    ...
    $i=0;
    if(
    $_POST['login'] == $query['login']) $i +=1;
    if(
    $_POST['pass'] == $query['pass']) $i +=1;
    if(
    $i == 2$_SESSION['auth'] = 'YES';
    Обойти авторизацию.



    Задание 048
    PHP:
    //Мы вызываем функцию cat с 3мя параметрами
    cat(1,2,3);


    function 
    cat(......)
    {
    ................
    return 
    //Функция должна вернуть число аргументов, которые мы передаем при её вызове.
    // cat(1)   функция должна вернуть 1
    // cat(1,2,,5,8,5,478,8,5) функция должна вернуть 8
    }

    Ответ



    Задание 049
    Что нельзя делать с массивом GLOBALS такова, что можн с другими массивами
    Ответ



    Задание 050
    Написать скрипт который выведет сколько строк он сам.
    PHP:
    <?php
    $a
    =1;
    $d=2;
    //Должен вывести число 2, тоесть строки с дескрипторами не всчет.
    ?>
    Ответ
     
    #2 Krist_ALL, 20 Jun 2009
    Last edited: 30 Nov 2009
    3 people like this.
  3. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    ТС маладэц,+5
    Задание 003
    PHP:
    <html> 
    <body> 
    <?php 
    $a
    =rand(1,10); 
    $b=rand(1,10); 
    $c=rand(1,10); 
    $sum=($a+$b+$c); 
    if(
    $sum==16){ 
        echo 
    " сумма этих 3х чисел равна 16."
        exit; 
        } 


    ?> 
    <form  method=post> 
    <input name="chislo" type="text" value="<? echo "не 16"; ?>"> 
    <input type="submit" value="Send"> 
    </form> 
    </html> 
    исправил
     
    #3 L I G A, 20 Jun 2009
    Last edited: 20 Jun 2009
    1 person likes this.
  4. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    Задание 004
    PHP:
    <?php
    $a
    =array(10,6,15,25,18,11,10,5,7,30,32,40);
    for (
    $i=0$i<count($a); $i++)
    echo (
    $a[$i]%5)==0?$i." ":'';
    ?>
    Задание 008:
    в запрос ставить:
    selselectect, тогда select вырежется из середины и останется select

    Задание 010:
    Вместо пробела ставить + или %20 (точно не уверен).
     
    #4 wildshaman, 21 Jun 2009
    Last edited: 21 Jun 2009
    6 people like this.
  5. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Задание 004 лучше так:
    PHP:
    <?php
    $a
    =array(10,6,15,25,18,11,10,5,7,30,32,40);
    foreach(
    $a as $index=>$elem)
    if(
    $elem%5==0) print $index.' ';
    ?>
     
  6. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    задание 002:
    PHP:
    <?php 
    $badwords
    =array('union''select''xuy');
    $str='union union select [uy unununionionion fdfsd xxuyuy';
    foreach (
    $badwords as $word)
    {
        while(
    preg_match("|$word|is",$str))
            
    $str=str_ireplace("$word","",$str);
    }
    echo 
    $str;
    ?>
     
  7. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    Задание 003:
    PHP:
    <?php 
    while ($sum!=16)
    {
        
    $s1=rand(0,10);
        
    $s2=rand(0,10);
        
    $s3=rand(0,10);
        
    $sum=$s1+$s2+$s3;
        echo 
    $s1." ".$s2." ".$s3."<br>";
    }
    ?>
     
  8. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    478
    Likes Received:
    483
    Reputations:
    99
    Задание 001
    PHP:
    <?php
    $str 
    "123 456";
    echo 
    preg_replace("|(.*) (.*)|is""\$2 \$1"$str);
    ?>
     
  9. ph1l1ster

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

    Joined:
    11 Mar 2008
    Messages:
    396
    Likes Received:
    153
    Reputations:
    19
    Может переменуете тему в Perl, PHP, MySql, JS Задания?) и не только по пхп... будет интересней
     
  10. .Slip

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

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    976
    Reputations:
    783
    >> МБ тогда пробел захексить?)
    Омг
    >> Krist_ALL, добавь в 010 чтобы заменялось ещё /**/, а то тут банально очень, пусть подумают
    Лучше сразу /, * . Т.к. есть /*!...*/
     
    1 person likes this.
  11. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Обойти авторизацию

    PHP:
    <? // config.php
        
    $admin_login 'admin';
        
    $admin_pass 'laufd98w3er9832y9508wer';
    ?>
    PHP:
    <? // index.php
        
    require 'config.php';

        unset($
    $my_security_var);
        unset(
    $my_security_var);
        unset($
    $my_security_var2);
        unset(
    $my_security_var2);

        if (
    $login == $admin_login and $passwd == $admin_pass)
        {
            die(
    'Done.');
        } else 
        {
            echo 
    'Incorrect';
        }
    ?>
    <form method="get">
        <input type="text" name="login" style="width:150px" value="login">
        <input type="text" name="passwd" style="width:150px" value="pass">
        <input type="submit" value="Check">
    </form>
    ----------------------

    Нарыть активную XSS
    PHP:
    <? // config.php
        
    $dbhost 'localhost';
        
    $dbuser 'root';
        
    $dbpass '';
        
    $dbname 'xss';
        
        
    mysql_connect($dbhost$dbuser$dbpass) or die('Can\'t connect to MySQL server.');
        
    mysql_select_db($dbname) or die('Can\'t select db.');
    ?>
    PHP:
    <? // index.php
        
    include('config.php');

        function 
    callback($text)
        {
            return 
    html_entity_decode($text[0]);
        }
        
        function 
    parse_bb($text)
        {
            
    $text str_replace('"'''$text);
            
    $text str_replace("'"''$text);
            
    $text htmlspecialchars($text);
            
    $text str_replace("\r\n"'<br>'$text);
            
            
    $bb = array('[B]' => '<b>''[/B]' => '</b>''[U]' => '<u>''[/U]' => '</u>',
                        
    '[I]' => '<i>''[/I]' => '</i>''[CENTER]' => '<center>''[/CENTER]' => '</center>',
                        
    '[MAIL=(' => '<a href="mailto:'')MAIL]' => '">''[/MAIL]' => '</a>',
                        
    '[HREF=(' => '<a href="'')HREF]' => '">''[/HREF]' => '</a>',
                        
    '[IMG]' => '<img border="0" src="''[/IMG]' => '">''[HR]' => '<hr>');
                        
            foreach (
    $bb as $code => $replace)
            {
                
    $text str_replace($code$replace$text);
            }

            
    $text preg_replace_callback('#"(.*?)"#''callback'$text);
            
            return 
    $text;
        }
        
        if (isset(
    $_POST['name']) && isset($_POST['text']))
        {
            
    mysql_query('INSERT INTO gb (`name`, `text`) VALUES (\''.addslashes(htmlspecialchars($_POST['name'])).'\', \''.parse_bb($_POST['text']).'\')');
            
    header('Location: index.php');
            die();
        }
    ?>
    <html>
    <head>
        <title>Active XSS</title>
        <style type="text/css">
            html {
                background-color: #e6e6e6;
            }
            body {
                font-family: Verdana, Arial, sans-serif;
                font-size: 12px;
                margin: 10px;
                border: 1px solid #d0d0d0;
                background-color: #f6f6f6;
                padding: 10px;
            }
            #text {
                border: 1px solid #999;
                background-color: f6f6f6;
                color: #000;
                font-family: Verdana, Arial, sans-serif;
                font-size: 12px;
            }
            #input1 {
                border: 0;
                color: #000;
                width: 100%;
            }
            textarea {
                border: 0;
                color: #000;
                width: 100%;
                height: 150px;
            }
            table {
                font-family: Verdana, Arial, sans-serif;
                font-size: 12px;
            }
            #button {
                border: 0;
                background-color: f6f6f6;
                color: #000;
                width: 99%;
            }
            #border {
                border: 1px solid #999;
                font-family: Verdana, Arial, sans-serif;
                font-size: 12px;
            }
        </style>
    </head>
    <body>
    <form method="post">
        <table border="0" cellpadding="1" cellspacing="1" width="80%" align="center">
        <tr>
            <td width="100px">You name: </td>
            <td id="border"><input type="text" name="name" value="Vasya" id="input1"></td>
        </tr>
        <tr>
            <td colspan="2">
            <b>Allowed BB code:</b><br>
            <ul>
            <li><b>[B][/B] [U][/U] [I][/I] [CENTER][/CENTER] [IMG][/IMG] [HR]</b></li>
            <li><b>[MAIL=(</b>mail@mail.ru<b>)MAIL]</b>My MAIL<b>[/MAIL]</b></li>
            <li><b>[HREF=(</b>http://fsb-my.name<b>)HREF]</b>My Site<b>[/HREF]</b></li>
            </ul>
            </td>
        </tr>
        <tr>
            <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
            <td colspan="2" align="center" id="border">
                <textarea name="text"></textarea>
            </td>
        </tr>
        <tr>
            <td colspan="2" align="center" id="border"><input type="submit" value="Post" id="button"></td>
        </tr>
        <tr>
            <td colspan="2">&nbsp;</td>
        </tr>
        <tr>
            <table border="0" cellpadding="2" cellspacing="2" width="100%" align="left" id="text">
            <?
                $result = mysql_query('SELECT * FROM gb ORDER BY id DESC');
                if ($result)
                {
                    while ($row = mysql_fetch_array($result))
                    {
                        ?>
                        <tr>
                            <td><?=$row['name'];?> ОХЬЕР:</td>
                        </tr>
                        <tr>
                            <td><?=$row['text'];?></td>
                        </tr>
                        <tr>
                            <td align="center"><font color="Gray">---------</font></td>
                        </tr>
                        <?
                    }
                }
            ?>
            </table>
        </tr>
        </table>
    </form>
    </body>
    </html>
    Code:
    CREATE TABLE IF NOT EXISTS `gb` (
      `id` int(11) NOT NULL auto_increment,
      `name` text NOT NULL,
      `text` text NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM;
    
     
    2 people like this.
  12. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    BlackSun Второе не смотрел пока ..
    первое ... отправить дополнительно ешё 2 гет параметра

    my_security_var = admin_login
    my_security_var2 = admin_pass

    а логин и пароль оставить пустыми .. у себя не проверял т.к лень править php.ini но в правельности уверен на 99.99%
     
    1 person likes this.
  13. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Правильно. Завтра + поставлю, сегодня всё в минусомет убил
     
  14. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    не совсем по скриптовым языкам (пусть нижний код будет на c - или на этом языке от сан - или ...), но всё же - без компиляции, дебага и т.п. скажите, чему будет равно a? (просто, но смешно)
    PHP:
    int a 5+765432l;
     
  15. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    BlackSun второе

    [HREF=([HREF=(style=background:url() onerror=alert(/lo/) )HREF])HREF]

    в опере пахает в остольных не проверял =)

    зы хсс в стилях чесно скомуниздено у LeverOne ... т.к забыл как вызывать алерт через стили =)

    desTiny хз чему будет равно но момойму значение будет привышать максимальное допустимое для int ... хз :rolleyes:
     
    #15 Doom123, 21 Jun 2009
    Last edited: 21 Jun 2009
  16. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    превышать точно не будет - в int что-то порядка 2.1*10^9 влезает
     
  17. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    ну смотря в какой сисиеме 16/32/64 и что short/long не помнб что ставится по умолчанию када пишешь просто int =)
     
  18. desTiny

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

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    int по дефолту 32-битный (в 32-битной системе и тп все меня поняли). короче, нет там переполнений)
     
  19. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    не удержался .. скомплил .. ппц =)

    хмм .. написал то же самое ручками сё норм ..
    еси скопировать то выходит байда оО wtf?


    бля сцук)) это не 1 а L ! =)
     
    #19 Doom123, 21 Jun 2009
    Last edited: 22 Jun 2009
    1 person likes this.
  20. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Пожалуйста, не пишите сюда задания на с и с++, для этого есть специальный разел. Завтра еще заданий добавлю. И обновлю фак в начале. Спасибо всем кто принимает участие! Пхп-взлом -новая тематика заданий)
     
Loading...