Просмотр полной версии : моя защита
собственно, конкретно по тематике форума - Безопасность веб-интерфейсов.
Вот вам интерфейс - http://vipavia.ru/links?add
Попробуйте из спортивного интереса написать скрипт, который сам добавит хоть одну ссылку.
Добавленной считается ссылка, когда ответ сервера не содержит ошибки.
Если сразу раскусите, скажите в пм, усложню :)
и? Скрипт не писал, но там и писать-то нечего - куку принял, 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=/ , впариваемый браузеру при первом коннекте к странице - защитой не является.
)
хотя обфускация процесса формирования куки на пхп действительно может временно помешать тем, кто его не знает)
Отсюда берется видимо
http://vipavia.ru/jquery.js
# парсим
my ($newVal) = $page =~ /newVal =([\d\-+\/\*\s\)\(]+);/;
# считаем
$newVal = eval($newVal);
--
капча эффективней будет
Kaimi - напиши в приват, интересно до конца ли ты понял.
Все остальные - как я и предполагал, защита работает. Ход ваших мыслей неправильный.
Видимо из формы делаешь вызов к
changecs:function(){$('#s'+'c'+'r'+'t').attr('valu e', jprop);
Я js практически не знаю, так что не могу сказать точно как работает скрипт
мне только одно не ясно почему секретный ключ у всех один =\\ что у ErrorNeo что у меня
тогда в чём смысл этого ключа?
Kaimi
ага :)
Doom123
точно, надо бы его генерить динамически
эмммм .. написало что сссылка добавилась
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://vipavia.ru/links?add');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_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($ch, CURLOPT_COOKIEFILE, realpath(dirname(__file__)).'/'.'cook.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(dirname(__file__)).'/'.'cook.txt');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_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;
?>
А можно так .. даже еси динамический будет ...
<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($ch, CURLOPT_URL, 'http://vipavia.ru/links?add');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_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($ch, CURLOPT_COOKIEFILE, realpath(dirname(__file__)).'/'.'cook.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(dirname(__file__)).'/'.'cook.txt');
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_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 ' -выход
и никаких кук, хешей и прочего яваскрипта
сделал ещё жестче
кто осилит?
2 Pashkela
да, тока что хотел уточнить что через пхп, а не яваскриптом и браузером)) в браузере то понятное дело всё само выполнится. это уже вторая часть защиты, которую пока ещё не сделал
Pashkela
15.09.2009, 15:22
Кто-кто, я опядь!:) Скрипт выше. Любой твой изыск обойдет, гы
Браузер можно и убрать, это так, для наглядности:)
objIE.Visible = FALSE
обновил пост, твой не видел)
Doom123
да, слабость защиты была в том, что ключ в открытом виде
буду делать динамический
Pashkela
15.09.2009, 15:27
на php так на php:
1. Скрипт выше - 123.vbs
2.
<?system('123.vbs');?>
только что проверил на денвере - работает!:):):):):)
Pashkela да да мы понели что ты крут ...
Дикс
п.с када сделаешь скажи а то проверки ключа нету =)
вот щас защита есть. я ещё буду её улучшать, есть идеи
geezer.code
15.09.2009, 20:11
защититься можно только тестами тьюринга. любая другая защита сложна лишь в техническом исполнении, и создает только временные трудности. имхо.
тест тьюринга это настолько убогая защита, что на её решение тратится вызов пары готовых функций и секунд 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
Есть множество вариаций теста Тьюринга, некоторые из них можно решить просто, но НЕ ВСЕ.
кагбэ поддерживаю geezer.code.
тс, попробуй вместо обычной текстовой капчи клик по 1-й из, допустим, 5 картинок, где только на одной изображена, например, собака. антикапча такие ещё не принимает, так что только вручную выйдет отсылать.
а любая другая защита обходится. это дело времени.
я имел ввиду капчу
мне интересно сделать такую защиту, которую даже мне влом было бы разобрать и сломать
и при этом не пользоваться никакими картинками
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
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, True);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, True);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookiefile.txt');
curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookiefile.txt');
curl_setopt($curl, CURLOPT_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_hash, 0, 3) . $link_sub . substr($secret_hash, 4);
/*
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($curl, CURLOPT_POST, True);
curl_setopt($curl, CURLOPT_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
спасибо за развёрнутый ответ :)
я не претендую на супер-защиту, пока лишь просто попробовал. тем не менее первая страница темы вся забита неправильными решениями, значит защита нубов сбивает с толку.
p.s. автору на заметку - вылетает иногда ошибка (типа не заполнено какое-то поле) при заполненной форме... парадокс
я как раз таки считаю что такие непонятные ошибки усложняют процесс взлома, запутывая кодера :)
защититься можно только тестами тьюринга. любая другая защита сложна лишь в техническом исполнении, и создает только временные трудности. имхо.
время то да. но есть такая штука как целесообразность взлома. если защита меняется каждый день/два то зачем взламывать и писать обход ее. хотя не спорю, тест тьюринга на данный момент остается одной из силнейших защит
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot