моя защита

Discussion in 'PHP' started by Дикс, 14 Sep 2009.

  1. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    собственно, конкретно по тематике форума - Безопасность веб-интерфейсов.

    Вот вам интерфейс - http://vipavia.ru/links?add
    Попробуйте из спортивного интереса написать скрипт, который сам добавит хоть одну ссылку.

    Добавленной считается ссылка, когда ответ сервера не содержит ошибки.

    Если сразу раскусите, скажите в пм, усложню :)
     
    1 person likes this.
  2. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    и? Скрипт не писал, но там и писать-то нечего - куку принял, secret_hash спарсил.
     
  3. CrazyStudentS_Mi}{

    CrazyStudentS_Mi}{ Elder - Старейшина

    Joined:
    4 Jul 2007
    Messages:
    424
    Likes Received:
    296
    Reputations:
    92
    XHE все пробьет,если только у тебя совсем не отключено добавление ссылок
     
  4. ErrorNeo

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

    Joined:
    2 May 2009
    Messages:
    923
    Likes Received:
    836
    Reputations:
    402
    я 0 в пхп потому хз как из
    Code:
    <script type='text/javascript'>
    var newVal = 997 - 8 * (532 / 440);
    $('#scrt').attr('value', newVal);
    +
    Code:
    <input type='hidden' name='secret_hash' id='scrt'
    	value='dsfi7as8igqku2dqkqu_dgASDAU22UDBA-WJA2u8df==' />
    получается
    Code:
    secret_hash=6426-09
    но до тех пор, пока этот secret_hash величина постоянная,
    Set-Cookie: PHPSESSID=..........; path=/ , впариваемый браузеру при первом коннекте к странице - защитой не является.
    )

    хотя обфускация процесса формирования куки на пхп действительно может временно помешать тем, кто его не знает)
     
    #4 ErrorNeo, 15 Sep 2009
    Last edited: 15 Sep 2009
  5. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Отсюда берется видимо
    http://vipavia.ru/jquery.js
     
    _________________________
    2 people like this.
  6. eLWAux

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

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    # парсим
    my ($newVal) = $page =~ /newVal =([\d\-+\/\*\s\)\(]+);/;
    # считаем
    $newVal = eval($newVal);
    --
    капча эффективней будет
     
  7. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Kaimi - напиши в приват, интересно до конца ли ты понял.
    Все остальные - как я и предполагал, защита работает. Ход ваших мыслей неправильный.
     
  8. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Видимо из формы делаешь вызов к
    changecs:function(){$('#s'+'c'+'r'+'t').attr('value', jprop);

    Я js практически не знаю, так что не могу сказать точно как работает скрипт
     
    _________________________
  9. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    мне только одно не ясно почему секретный ключ у всех один =\\ что у ErrorNeo что у меня

    тогда в чём смысл этого ключа?
     
  10. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Kaimi
    ага :)

    Doom123
    точно, надо бы его генерить динамически
     
  11. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    эмммм .. написало что сссылка добавилась

    PHP:
    <?php

    $ch 
    curl_init();
            
    curl_setopt($chCURLOPT_URL'http://vipavia.ru/links?add');
            
    curl_setopt($chCURLOPT_HEADER1);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS'linkemail=qwe%40qw.ww&linkbackhref=http%3A%2F%2Fqw21e.qw&linktext=qeqw12&linkhref=http%3A%2F%2Fqw.qw12&category=1&desc=hgjhgj&secret_hash=6426-09');
               
            
    curl_setopt($chCURLOPT_COOKIEFILErealpath(dirname(__file__)).'/'.'cook.txt');
            
    curl_setopt($chCURLOPT_COOKIEJARrealpath(dirname(__file__)).'/'.'cook.txt');
            
    curl_setopt($chCURLOPT_AUTOREFERERtrue);
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1');
            
            
    $response curl_exec($ch);
            
    curl_close($ch);
            
            echo 
    $response;

    ?>
    А можно так .. даже еси динамический будет ...

    PHP:
    <script type='text/javascript' src='http://vipavia.ru/jquery.js'></script>
    <script type='text/javascript'>
    var newVal = 751 - 0 * (494 / 469);
    $('#scrt').attr('value', newVal);
    </script>
    <form action="" method="POST">
    <input type='hidden' name='secret_hash' id='scrt'
        value='0978141f8d5905ffef18e' />
        <input type='submit' value='отправить' />
        </form>
    <?php


    $ch 
    curl_init();
            
    curl_setopt($chCURLOPT_URL'http://vipavia.ru/links?add');
            
    curl_setopt($chCURLOPT_HEADER1);
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS'linkemail=qwe%40qw.ww&linkbackhref=http%3A%2F%2Fqw21e.qw&linktext=qeqw12&linkhref=http%3A%2F%2Fqw.qw12&category=1&desc=hgjhgj&secret_hash='.$_POST['secret_hash']);
               
            
    curl_setopt($chCURLOPT_COOKIEFILErealpath(dirname(__file__)).'/'.'cook.txt');
            
    curl_setopt($chCURLOPT_COOKIEJARrealpath(dirname(__file__)).'/'.'cook.txt');
            
    curl_setopt($chCURLOPT_AUTOREFERERtrue);
            
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1');
            
            
    $response curl_exec($ch);
            
    curl_close($ch);
            
            echo 
    $response;

    ?>
     
    #11 Doom123, 15 Sep 2009
    Last edited: 15 Sep 2009
  12. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Читал, читал - да, защита очень сильная, потратил 1 минуту целую:

    Code:
    On Error Resume Next
    Set objIE = CreateObject("InternetExplorer.Application")
    ssilka = "http://vipavia.ru/links?add"
          objIE.Visible = True     'Если не надо ничего видеть, то поставить False
          objIE.Navigate ssilka
          While objIE.Busy
             WScript.Sleep 200
          Wend 
          Set objForm = objIE.Document.forms(0)
          objForm.elements("linkemail").value = "lala@lala.com"
          objForm.elements("linkbackhref").value = "/"
          objForm.elements("linktext").value = "ахуительная тут защита, да"
          objForm.elements("linkhref").value = "http://google.ru"
          objForm.elements("desc").value = "описание"
          objForm.submit 
    'objIE.Quit' закрываем браузер
    'Set objIE = Nothing 
    Wscript.Quit ' -выход
    
    и никаких кук, хешей и прочего яваскрипта
     
    #12 Pashkela, 15 Sep 2009
    Last edited: 15 Sep 2009
    1 person likes this.
  13. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    сделал ещё жестче
    кто осилит?

    2 Pashkela
    да, тока что хотел уточнить что через пхп, а не яваскриптом и браузером)) в браузере то понятное дело всё само выполнится. это уже вторая часть защиты, которую пока ещё не сделал
     
  14. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Кто-кто, я опядь!:) Скрипт выше. Любой твой изыск обойдет, гы

    Браузер можно и убрать, это так, для наглядности:)

    objIE.Visible = FALSE
     
  15. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    обновил пост, твой не видел)
     
  16. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Doom123

    да, слабость защиты была в том, что ключ в открытом виде
    буду делать динамический
     
  17. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    на php так на php:

    1. Скрипт выше - 123.vbs
    2.

    PHP:
    <?system('123.vbs');?>
    только что проверил на денвере - работает!:):):):):)
     
  18. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Pashkela да да мы понели что ты крут ...

    Дикс
    п.с када сделаешь скажи а то проверки ключа нету =)
     
    #18 Doom123, 15 Sep 2009
    Last edited: 15 Sep 2009
  19. Дикс

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

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    вот щас защита есть. я ещё буду её улучшать, есть идеи
     
  20. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    защититься можно только тестами тьюринга. любая другая защита сложна лишь в техническом исполнении, и создает только временные трудности. имхо.
     
    1 person likes this.