Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
[PHP] ЗАДАНИЯ от Krist_ALL |

20.06.2009, 18:07
|
|
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме: 1996429
Репутация:
468
|
|
[PHP] ЗАДАНИЯ от Krist_ALL
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>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"> </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>
Код:
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
Вывести значение переменной $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';
?>
Ответ
Последний раз редактировалось Krist_ALL; 30.11.2009 в 17:57..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|