о перфекционизме и проститутках

Discussion in 'PHP' started by Дикс, 10 Jul 2008.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    есть собственно сайтец, посвященный прекрасной половине нашего человечества - http://www.sexnsk.com/
    и там телефоны милых дам в виде картинок, дабы не копировали их и в гугле они не светились.

    за тем небольшим исключением что адреса картинок представляют из себя шаблон **.php??tel=8913-***

    соответственно родилось желание эти номерки потырить.

    что и сделал следующий код:
    PHP:
    <?php
    $content 
    '';
    $nums = array();

    $page fopen('http://www.sexnsk.com/''r');

    while(!
    feof($page))
      
    $content .= fread($page4096);

    preg_match_all("/891[0-9-]+/"$content$nums);

    foreach(
    $nums[0] as $num)
        echo 
    $num '<br />';
    Зачем я это вообще написал?
    Хочется узнать - можно ли как-то оптимизировать/сократить данный код? (ну кроме обфускатора конечно гг)
     
    1 person likes this.
  2. Jer1cho

    Jer1cho Member

    Joined:
    6 Jun 2008
    Messages:
    209
    Likes Received:
    65
    Reputations:
    10
    Совсем немного упростить если:
    PHP:
    <?php 
    $data 
    file_get_contents('http://www.sexnsk.com/index.php'); 
    preg_match_all("#tel=(.*)></td>#"$data$nums); 
    foreach(
    $nums[1] as $num){
    echo 
    $num.'<br/>';
    }
    ?>
     
  3. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    Убрать
    PHP:
    $content '';
    $nums = array(); 
    заменить
    PHP:
    $page fopen('http://www.sexnsk.com/''r');

    while(!
    feof($page))
      
    $content .= fread($page4096); 
    на
    PHP:
    $content file_get_contents('http://www.sexnsk.com/index.php');
    PS опередили)
     
    _________________________
    1 person likes this.
  4. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    Проше сам сайт захекать и слить БД))
    http://do.sexnsk.com/index.php?event=list&id=117086122899
    каг гриццо, без коментариев)
     
  5. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    А я вот еще короче могу))))

    PHP:
    <?
    preg_match_all("#tel=(.*)></td>#"file_get_contents('http://www.sexnsk.com/index.php'), $nums); 
    print_r($nums);
    ?>
    :D
     
    #5 -=Static=-, 11 Jul 2008
    Last edited: 11 Jul 2008
  6. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    а еще проще, в одну строчку:
    PHP:
    <?php preg_replace("#tel=(.*)></td>#e",'print("$1\n")',file_get_contents('http://www.sexnsk.com/index.php'));  
     
    #6 ShAnKaR, 11 Jul 2008
    Last edited: 11 Jul 2008
    2 people like this.
  7. D=P=CH= MOD=

    D=P=CH= MOD= Elder - Старейшина

    Joined:
    15 Aug 2006
    Messages:
    249
    Likes Received:
    195
    Reputations:
    15
    Code:
    http://forum.sexnsk.com/forumbackup-06.05.2008-ff546.sql
    ;)
     
    7 people like this.
  8. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    ага, а такая вот ссылка заставит твой винт пожужжать:
    Code:
    **.php??tel=8913-";system("rm - rf /"); print (">
     
    1 person likes this.
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ахаха, ну вы молодцы парни. вот уж не ожидал :)

    я тоже сначала использовал вот такую регулярку:
    preg_match_all("/?tel=(.*)>/"
    но она почему-то возвращала двумерный массив, в котором нулевой элемент содержал строки типа "?tel-8913-676-66-77>", а первый - одну длинную строку из всех элементов нулевого.

    я так и не понял, почему (.*) не выцепило телефон из общего шаблона.

    ща попробовал. интересно получается:
    "#tel=(.*)></td>#e" - выцепляет телефоны, а
    "#tel=(.*)>#e" - выцепляет телефоны с символом > и они получаются в одну строку, хотя я немного изменил второй операнд:
    'print("$1<br >")'
     
    #9 Дикс, 11 Jul 2008
    Last edited: 11 Jul 2008
  10. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    думаю, безопасный финальный код должен быть таким:
    PHP:
    preg_replace("#tel=([0-9-]+)></td>#e",'print("$1<br >")',file_get_contents('http://www.sexnsk.com/index.php'));
     
  11. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    ничего не произойдет. твой код не выйдет за приделы "
     
  12. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    ты прав что это не безопастно, надо так:
    PHP:
    preg_replace("#tel=(.*)></td>#e","print('$1\\n')",file_get_contents('http://www.sexnsk.com/index.php'));
    в кавычках фишка, всем видно думаю.
     
  13. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Отнюдь не в кавычках тут дело. Строка, идущая вторым параметром, после подстановки туда значения из регекспа по сути передается как аргумент функции eval. Поэтому никакие кавычки тут не спасут. Выход куда проще: нужно просто подправить саму регулярку, чтобы ничего лишнего туда не попало:
    Code:
    было:
    (.*)
    
    стало:
    ([0-9\-]*)
    
     
  14. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ага.
    может кто ещё подобный скриптец на форум подкинет?
     
  15. ShAnKaR

    ShAnKaR Пачка маргарина

    Joined:
    14 Jul 2005
    Messages:
    904
    Likes Received:
    297
    Reputations:
    553
    если не согласен - дай код который выполнится в моем последнем примере тогда. с одним phpinfo() чтоб проще было.
    PS если кстати дашь реальный ответ то похекаем сразу кучи двигов ) с регулярками.
     
    #15 ShAnKaR, 11 Jul 2008
    Last edited: 11 Jul 2008
  16. genom--

    genom-- Elder - Старейшина

    Joined:
    9 Jul 2006
    Messages:
    668
    Likes Received:
    416
    Reputations:
    288
    интересно зачем ему база с номерами проституток? 0_0
     
  17. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    спам по смс ^^
    тематический
     
    _________________________
    1 person likes this.
  18. 5triker

    5triker Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    62
    Likes Received:
    41
    Reputations:
    1
    званить и апщаца имхо
     
    1 person likes this.
  19. Helios

    Helios Elder - Старейшина

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Кажется ты не совсем понял мою мысль. Смотрим в ман:
    Отсюда видим, что второй параметр выполняется как код после замены переменных. Отсюда следует, что никаким способом невозможно изменить второй параметр так, чтобы невозможен был инжект (вариант удалить замену в принципе - не рассматриваем=)).

    А уже следуя из этого приходим к тому, что нужно следить за регулярным выражением, убирая лишнее еще там. Ну а предложенное тобой (.*) пропускает все что угодно.

    Этим то и грешили многие движки, да и грешат до сих пор.
    ЗЫ: и похекать мы сможем только единицы, т.к. девелоперы за регулярками обычно следят
     
  20. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    жжошь ... лови плюсы =)