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 или матерные слова Ответ Задание 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>[email protected]<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"> </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"> </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(1, 3, 5, 7, 9, 11, 13, 15, 17); $array2 = array(2, 4, 6, 8, 10); В итоге должно получиться следующее: 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'; ?> Ответ
Задание 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, тоесть строки с дескрипторами не всчет. ?> Ответ
ТС маладэц,+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> исправил
Задание 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 (точно не уверен).
Задание 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.' '; ?>
задание 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; ?>
Задание 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>"; } ?>
>> МБ тогда пробел захексить?) Омг >> Krist_ALL, добавь в 010 чтобы заменялось ещё /**/, а то тут банально очень, пусть подумают Лучше сразу /, * . Т.к. есть /*!...*/
Обойти авторизацию 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>[email protected]<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"> </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"> </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;
BlackSun Второе не смотрел пока .. первое ... отправить дополнительно ешё 2 гет параметра my_security_var = admin_login my_security_var2 = admin_pass а логин и пароль оставить пустыми .. у себя не проверял т.к лень править php.ini но в правельности уверен на 99.99%
не совсем по скриптовым языкам (пусть нижний код будет на c - или на этом языке от сан - или ...), но всё же - без компиляции, дебага и т.п. скажите, чему будет равно a? (просто, но смешно) PHP: int a = 5+765432l;
BlackSun второе [HREF=([HREF=(style=background:url() onerror=alert(/lo/) )HREF])HREF] в опере пахает в остольных не проверял =) зы хсс в стилях чесно скомуниздено у LeverOne ... т.к забыл как вызывать алерт через стили =) desTiny хз чему будет равно но момойму значение будет привышать максимальное допустимое для int ... хз
ну смотря в какой сисиеме 16/32/64 и что short/long не помнб что ставится по умолчанию када пишешь просто int =)
не удержался .. скомплил .. ппц =) хмм .. написал то же самое ручками сё норм .. еси скопировать то выходит байда оО wtf? бля сцук)) это не 1 а L ! =)
Пожалуйста, не пишите сюда задания на с и с++, для этого есть специальный разел. Завтра еще заданий добавлю. И обновлю фак в начале. Спасибо всем кто принимает участие! Пхп-взлом -новая тематика заданий)