Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   моя защита (https://forum.antichat.xyz/showthread.php?t=141459)

Дикс 14.09.2009 21:44

моя защита
 
собственно, конкретно по тематике форума - Безопасность веб-интерфейсов.

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

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

Если сразу раскусите, скажите в пм, усложню :)

mr.The 14.09.2009 22:14

и? Скрипт не писал, но там и писать-то нечего - куку принял, secret_hash спарсил.

CrazyStudentS_Mi}{ 14.09.2009 23:58

XHE все пробьет,если только у тебя совсем не отключено добавление ссылок

ErrorNeo 15.09.2009 00:50

я 0 в пхп потому хз как из
Код:

<script type='text/javascript'>
var newVal = 997 - 8 * (532 / 440);
$('#scrt').attr('value', newVal);

+
Код:

<input type='hidden' name='secret_hash' id='scrt'
        value='dsfi7as8igqku2dqkqu_dgASDAU22UDBA-WJA2u8df==' />

получается
Код:

secret_hash=6426-09
но до тех пор, пока этот secret_hash величина постоянная,
Set-Cookie: PHPSESSID=..........; path=/ , впариваемый браузеру при первом коннекте к странице - защитой не является.
)

хотя обфускация процесса формирования куки на пхп действительно может временно помешать тем, кто его не знает)

Kaimi 15.09.2009 00:54

Отсюда берется видимо
http://vipavia.ru/jquery.js

eLWAux 15.09.2009 01:25

# парсим
my ($newVal) = $page =~ /newVal =([\d\-+\/\*\s\)\(]+);/;
# считаем
$newVal = eval($newVal);
--
капча эффективней будет

Дикс 15.09.2009 07:59

Kaimi - напиши в приват, интересно до конца ли ты понял.
Все остальные - как я и предполагал, защита работает. Ход ваших мыслей неправильный.

Kaimi 15.09.2009 13:40

Видимо из формы делаешь вызов к
changecs:function(){$('#s'+'c'+'r'+'t').attr('valu e', jprop);

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

Doom123 15.09.2009 14:45

мне только одно не ясно почему секретный ключ у всех один =\\ что у ErrorNeo что у меня

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

Дикс 15.09.2009 14:54

Kaimi
ага :)

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

Doom123 15.09.2009 14:54

эмммм .. написало что сссылка добавилась

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;

?>


Pashkela 15.09.2009 15:15

Читал, читал - да, защита очень сильная, потратил 1 минуту целую:

Код:

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 = "http://antichat.ru"
      objForm.elements("linktext").value = "ахуительная тут защита, да"
      objForm.elements("linkhref").value = "http://google.ru"
      objForm.elements("desc").value = "описание"
      objForm.submit
'objIE.Quit' закрываем браузер
'Set objIE = Nothing
Wscript.Quit ' -выход

и никаких кук, хешей и прочего яваскрипта

Дикс 15.09.2009 15:20

сделал ещё жестче
кто осилит?

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

Pashkela 15.09.2009 15:22

Кто-кто, я опядь!:) Скрипт выше. Любой твой изыск обойдет, гы

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

objIE.Visible = FALSE

Дикс 15.09.2009 15:22

обновил пост, твой не видел)

Дикс 15.09.2009 15:23

Doom123

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

Pashkela 15.09.2009 15:27

на php так на php:

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

PHP код:

<?system('123.vbs');?>

только что проверил на денвере - работает!:):):):):)

Doom123 15.09.2009 15:33

Pashkela да да мы понели что ты крут ...

Дикс
п.с када сделаешь скажи а то проверки ключа нету =)

Дикс 15.09.2009 20:05

вот щас защита есть. я ещё буду её улучшать, есть идеи

geezer.code 15.09.2009 20:11

защититься можно только тестами тьюринга. любая другая защита сложна лишь в техническом исполнении, и создает только временные трудности. имхо.

Дикс 15.09.2009 20:57

тест тьюринга это настолько убогая защита, что на её решение тратится вызов пары готовых функций и секунд 5 задержки

2all
сейчас переделал защиту. ещё далеко от идеала, но попробуйте обойти :)

Pashkela 15.09.2009 21:01

ну если 2 all, то мой вариант по преженему рабочий

geezer.code 15.09.2009 21:06

Цитата:

Сообщение от Дикс
тест тьюринга это настолько убогая защита, что на её решение тратится вызов пары готовых функций и секунд 5 задержки

(0о) Дикс, ты умеешь решать задачи распознавания образов вызовом пары готовых функций?

«Completely Automated Public Turing test to tell Computers and Humans Apart» - Captcha


Есть множество вариаций теста Тьюринга, некоторые из них можно решить просто, но НЕ ВСЕ.

mr.The 15.09.2009 21:33

кагбэ поддерживаю geezer.code.
тс, попробуй вместо обычной текстовой капчи клик по 1-й из, допустим, 5 картинок, где только на одной изображена, например, собака. антикапча такие ещё не принимает, так что только вручную выйдет отсылать.
а любая другая защита обходится. это дело времени.

Дикс 16.09.2009 08:15

я имел ввиду капчу
мне интересно сделать такую защиту, которую даже мне влом было бы разобрать и сломать
и при этом не пользоваться никакими картинками

Pashkela
твой не засчитывается, потому что он работает только на винде ;p

FireFenix 16.09.2009 20:54

Цитата:

Сообщение от Дикс
я имел ввиду капчу
мне интересно сделать такую защиту, которую даже мне влом было бы разобрать и сломать
и при этом не пользоваться никакими картинками

Pashkela
твой не засчитывается, потому что он работает только на винде ;p

Всегда есть особые условия!

NIX + WM + Win + VBS
тоже пашет :D

Если простым запуском Internet Explorer (пример пашкелы через VBS) можно отпоститься, то при сильном желании можно и найти передаваемые данные...
тока вот стимула это делать - 0

p.s. Pashkella жесток и беспощаден и как всегда оригинален... респект и уважуха ;)

FireFenix 16.09.2009 22:46

Так как пашкелла отписался тоже и я страдал от скуки... решил всё же поиздеваться над скриптом..... ушло ~5-10 минут

первые 3 минут - послал 3 запроса и сохранил результаты
p.s. автору на заметку - вылетает иногда ошибка (типа не заполнено какое-то поле) при заполненной форме... парадокс

следующие 2 минуты, я скачал с офф сайта jquery и total commander'ом сравнил твой вариант jquery, перед этим заменив ";" на ";\r\n"
и увидел разницу в (приведено в читаемый вид)
Код:

function()
{
  m3x='#s'+'c'+'r'+'t';
  c7b = $(m3x).attr('value');
  $(m3x).attr('value', c7b.substr(0,3) + $('#link_sub').attr('value') + c7b.substr(4));
}

судя из кода - после загрузки страницы, сразу вызывается функция, которая перезаписывает secret_hash

остальные 1-5 минут написание кода + регулярки...
PHP код:

<?php

$curl 
curl_init();

curl_setopt($curlCURLOPT_RETURNTRANSFERTrue);
curl_setopt($curlCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1');
curl_setopt($curlCURLOPT_FOLLOWLOCATIONTrue);
curl_setopt($curlCURLOPT_COOKIEFILE'cookiefile.txt');
curl_setopt($curlCURLOPT_COOKIEJAR'cookiefile.txt');

curl_setopt($curlCURLOPT_URL'http://vipavia.ru/links?add');
$xxx curl_exec($curl);

//просто так до кучи, чтобы если чо - не писать при следуюющем мего изменении скрипта :)
//preg_match_all('/newVal = ([^;]*);/ims', $xxx, $match_val);
//eval('$digits = ' . $match_val[1][0] . ';');

preg_match_all('/<input type=\'hidden\' name=\'link_sub\' value=\'([^\']*)\' id=\'link_sub\' \/>/ims'$xxx$match_sub);
preg_match_all('/<input type=\'hidden\' name=\'secret_hash\' id=\'scrt\'[\s]*value=\'([^\']*)\' \/>/ims'$xxx$match_hash);

$link_sub $match_sub[1][0];
$secret_hash $match_hash[1][0];

$result substr($secret_hash03) . $link_sub .  substr($secret_hash4);

/*
      link_sub=3b2o0l
      linkemail=test5%40test.ru
      linkbackhref=http%3A%2F%2Ftest5.ru
      linktext=http%3A%2F%2Ftest5.ru
      linkhref=http%3A%2F%2Ftest5.ru
      category=1
      desc=http%3A%2F%2Ftest5.ru
      secret_hash=60e3b2o0l5da17a2837831f75b
*/

//здесь делаем цикл for($i = 0; $i < 999999; $i++)
//{ //начало цикла

$i 999999;

$var 
'link_sub=' $link_sub .
'&linkemail=test' $i '%40test.ru' .
'&linkbackhref=http%3A%2F%2Ftest' $i '.ru' .
'&linktext=http%3A%2F%2Ftest' $i '.ru' .
'&linkhref=http%3A%2F%2Ftest' $i '.ru' .
'&category=1' .
'&desc=http%3A%2F%2Ftest' $i '.ru' .
'&secret_hash=' $result
;

curl_setopt($curlCURLOPT_POSTTrue);
curl_setopt($curlCURLOPT_POSTFIELDS$var);
$xxx curl_exec($curl);

//} //конец цикла

curl_close ($curl);

echo(
$xxx); //вывод результата
        
?>

Это было подтверждение моей фразе
Код:

Если простым запуском Internet Explorer можно отпоститься, то при сильном желании можно и найти передаваемые данные... тока вот стимула это делать - 0
2Дикс - додумай/доделай/допиши до конца, тогда и выложи...
ибо сейчас - тоже самое, что решать уравнение 2*y=4 (не придумал лучше и адекватнее метафору =\ )

идеи можно почерпнуть в HQ_09 (от eLWAux) - вроде последнем лвле, где нада поиграться с перлом
http://forum.antichat.ru/thread129518.html

Дикс 19.09.2009 08:32

спасибо за развёрнутый ответ :)
я не претендую на супер-защиту, пока лишь просто попробовал. тем не менее первая страница темы вся забита неправильными решениями, значит защита нубов сбивает с толку.

Цитата:

p.s. автору на заметку - вылетает иногда ошибка (типа не заполнено какое-то поле) при заполненной форме... парадокс
я как раз таки считаю что такие непонятные ошибки усложняют процесс взлома, запутывая кодера :)

gisTy 19.09.2009 10:25

Цитата:

Сообщение от geezer.code
защититься можно только тестами тьюринга. любая другая защита сложна лишь в техническом исполнении, и создает только временные трудности. имхо.

время то да. но есть такая штука как целесообразность взлома. если защита меняется каждый день/два то зачем взламывать и писать обход ее. хотя не спорю, тест тьюринга на данный момент остается одной из силнейших защит


Время: 16:40