
Константы, объявленные в ядре.
Плюс данных констант в том, что не следует использовать кавычки при их использовании. Пример от
Expl0ited:
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]
[/COLOR][/COLOR]
Если предположить запрет использования end и т. п. функций, можно выдвинуть данный вариант:
[PHP]
PHP:
[COLOR="#000000"][COLOR="#007700"]
fopen - Открыть файл
Функции изменения ресурсов, работают не только с файлами. Для каждой заблокированной функции можно найти замену среди других
fputs, fwrite - Бинарно-безопасная запись в файл
fgetc - Считывает символ из файла
fgetcsv - Читает строку из файла и производит разбор данных CSV
fgets - Читает строку из файла
fgetss - Прочитать строку из файла и отбросить HTML-теги
fpassthru - Выводит все оставшиеся данные из файлового указателя
fputcsv - Форматирует строку в виде CSV и записывает её в файловый указатель
fscanf - Обрабатывает данные из файла в соответствии с форматом
fseek - Устанавливает смещение в файловом указателе
ftruncate - Урезает файл до указанной длинны
readlink - Возвращает файл, на который указывает символическая ссылка
tempnam - Создаёт файл с уникальным именем
tmpfile - Создаёт временный файл
parse_ini_file - Чтение и парсинг
ini файлы
copy, move_uploaded_file, file_get_contents, file_put_contents, file, readfile - Без коментариев
Bzip2 - http://www.php.net/manual/ru/book.bzip2.php
Zlib - http://www.php.net/manual/ru/book.zlib.php
highlight_file, show_source - выделение синтаксиса файла, возможно использование URL(allow_url_include).
readgzfile - выводит gz-файл. Функция так же может читать обычные файлы, и использоваться как readfile.
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR]
[/COLOR]
3. Работа с сетью - закачка шеллов, отдача файлов
fopen, file_get_contents, file - Без комментариев.
Функции работы с базами данных - при некоторых обстоятельствах будет удобно подключиться к удалённой базе данных и передать необходимую информацию в обе стороны.
Думаю код данного раздела будет понятен всем, расписывать его не имеет смысла так как примеры находятся во многих источниках.
fsockopen, pfsockopen, stream_socket_client — получение данных.
dns_get_record - получение DNS записей(UDP).
Расширение sockets - socket_create и т. п. функции
Cyrus IMAP - http://www.php.net/manual/ru/book.cyrus.php - Работа с IMAP сервером.
get_meta_tags — Чтение мета-тегов HTML файла, путь к которому передан в первом аргументе, и return в виде ассоциативно массива.
cURL:
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"]function[/COLOR][COLOR="#0000BB"]curl_open[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$url[/COLOR][COLOR="#007700"]) {
[/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]curl_init[/COLOR][COLOR="#007700"]();
[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_URL[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]$url[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_USERAGENT[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'Opera 11.2'[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_HEADER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]false[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_CONNECTTIMEOUT[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]3[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_ENCODING[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'gzip, deflate'[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]curl_setopt[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]CURLOPT_RETURNTRANSFER[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#0000BB"]true[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$out[/COLOR][COLOR="#007700"]=[/COLOR][COLOR="#0000BB"]curl_exec[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]curl_close[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#0000BB"]$site[/COLOR][COLOR="#007700"]);
return[/COLOR][COLOR="#0000BB"]$out[/COLOR][COLOR="#007700"];
}
[/COLOR][/COLOR]
Расширение FTP - http://www.php.net/manual/ru/book.ftp.php
4. Выполнение system.
5-ый аргумент функции mail. До некоторых версий php возможно выполнение произвольных команд
system, exec, passthru, shell_exec(``) - Без комментариев.
proc_open и т.п. - Выполняет команду и открывает файловый указатель для ввода/вывода.
popen и т. п. - Открывает файловый указатель процесса
dl - загружает РНР-расширение на этапе прогона(enable_dl).
Классы, объекты
Список объявленных классов — get_declared_classes(). Ini:disable_classes — Список запрещённых классов.
0. DOMDocument, XMLReader, XMLWriter, SimpleXMLElement - Работа с XML, HTML. Возможность чтения и записи файлов данного формата.
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]loadHTMLFile[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'./test'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]//Чтение HTML файла
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]saveHTML[/COLOR][COLOR="#007700"]();[/COLOR][COLOR="#FF8000"]//Вывод
[/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]saveHTMLFile[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'test.html'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]//Запись HTML файла
[/COLOR][COLOR="#007700"]unset([/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]= new[/COLOR][COLOR="#0000BB"]DOMDocument[/COLOR][COLOR="#007700"]();
[/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]loadXMLFile[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'./testx'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]//Чтение XML файла
[/COLOR][COLOR="#007700"]echo[/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]saveXML[/COLOR][COLOR="#007700"]();[/COLOR][COLOR="#FF8000"]//Вывод
[/COLOR][COLOR="#0000BB"]$doc[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]saveXMLFile[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'testx.html'[/COLOR][COLOR="#007700"]);[/COLOR][COLOR="#FF8000"]//Запись XML файла
//[/COLOR][COLOR="#0000BB"]?>[/COLOR]
[/COLOR]
1. ZipArchive - Аналогично, работа с архивами, запаковка файлов, извлечение.
Код:
Code:
ZipArchive {
/* Methods */
bool addEmptyDir ( string $dirname )
bool addFile ( string $filename [, string $localname = NULL [, int $start = 0 [, int $length = 0 ]]] )
bool addFromString ( string $localname , string $contents )
bool close ( void )
bool deleteIndex ( int $index )
bool deleteName ( string $name )
bool extractTo ( string $destination [, mixed $entries ] )
string getArchiveComment ([ int $flags ] )
string getCommentIndex ( int $index [, int $flags ] )
string getCommentName ( string $name [, int $flags ] )
mixed getFromIndex ( int $index [, int $length = 0 [, int $flags ]] )
mixed getFromName ( string $name [, int $length = 0 [, int $flags ]] )
string getNameIndex ( int $index [, int $flags ] )
string getStatusString ( void )
resource getStream ( string $name )
mixed locateName ( string $name [, int $flags ] )
mixed open ( string $filename [, int $flags ] )
bool renameIndex ( int $index , string $newname )
bool renameName ( string $name , string $newname )
mixed setArchiveComment ( string $comment )
mixed setCommentIndex ( int $index , string $comment )
mixed setCommentName ( string $name , string $comment )
mixed statIndex ( int $index [, int $flags ] )gzdeflate
mixed statName ( name $name [, int $flags ] )
mixed unchangeAll ( void )
mixed unchangeArchive ( void )
mixed unchangeIndex ( int $index )
mixed unchangeName ( string $name )
}
2. SOAP
SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур (RPC). Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.
SOAP может использоваться с любым протоколом прикладного уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.
http://ru.wikipedia.org/wiki/SOAP
http://php.su/articles/?cat=pear&page=004&adminmode=true
WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML.
http://ru.wikipedia.org/wiki/WSDL
Текущая PHP реализация не имеет зависимости allow_url_(*). Стандартная работа с SOAP разделена на два блока - клиентскую и серверную. Многие думают что по стандартной схеме клиент - взламываемый ресурс, возможная дописка в CMS, но не всегда это так. Серверную часть тоже можно разместить на сайте, в различных кодах CMS и не занимающийся длительное время в этой области человек просто не разберёт, что делает данный код.
Данный протокол и методы его реализации пригодные для нас, и для нестандартных действий можно ещё расписывать страниц на 30, и то не рассказав много. Это сильно выходит за рамки этого текста, тем более что ниже как раз будет основное содержание статьи.
Стандартная библиотека PHP (англ. Standard PHP Library, SPL) — коллекция классов и интерфейсов для решения стандартных проблем в PHP. Библиотека была введена в PHP 5 и доступна по умолчанию, начиная с PHP 5.
Основное содержание библиотеки — классы-итераторы, решающие задачи итерации по каталогу, массиву, дереву XML.
SPL добавляет в PHP новые возможности ООП для работы с :
- итераторами;
- новые виды исключений;
- перегрузка (overloading) массивов,
- расширенное управление XML, файлами и данными
- паттерн Наблюдатель, интерфейс Исчисления (counting)
- автоматическая загрузка классов и интерфейсов
- ...
PHP поддерживает SPL начиная с версии 5.2.1.
http://www.php.net/manual/ru/book.spl.php
И т. д.
ArrayObject - Использование объектов в качестве массивов и работа с ними.
[СODE]
ArrayObject implements IteratorAggregate , Traversable , ArrayAccess , Serializable , Countable {
/* Константы */
const integer STD_PROP_LIST = 1 ;
const integer ARRAY_AS_PROPS = 2 ;
/* Методы */
__construct ([ mixed $input [, int $flags [, string $iterator_class ]]] )
..
void uasort ( callback $cmp_function )
void uksort ( callback $cmp_function )
public void unserialize ( string $serialized )
}
[/СODE]
Предпоследние методы принимают Callback function, что так же делает их доступными для выполнения кода.
Пример:
PHP код:
PHP:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"],[/COLOR][COLOR="#DD0000"]'assert'[/COLOR][COLOR="#007700"]=>[/COLOR][COLOR="#0000BB"]1[/COLOR][COLOR="#007700"]));
[/COLOR][COLOR="#0000BB"]$tst[/COLOR][COLOR="#007700"]->[/COLOR][COLOR="#0000BB"]uksort[/COLOR][COLOR="#007700"]([/COLOR][COLOR="#DD0000"]'call_user_func'[/COLOR][COLOR="#007700"]);
[/COLOR][COLOR="#0000BB"]?>[/COLOR]
[/COLOR]
В SPL достаточно классов, многие из них(Кто ещё не сделал) лучше изучить и использовать. Вообще, перед тем как писать всё это я планировал выделить только примеры скриптов, уязвимостей, работы функций не по предусмотрению разработчика. Ну раз я уж это написал, то это всё же имеет место для публики и последующего дополнения.