Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

10.02.2009, 05:10
|
|
Members of Antichat - Level 5
Регистрация: 28.05.2007
Сообщений: 729
Провел на форуме: 5571194
Репутация:
1934
|
|
VarTryer
VarTryer v. 1.0 [console]
Скрипт для быстрой проверки php-скриптов на баги [фаззер]
1. Принцип работы
Запускаем скрипт, по подсказкам вводим нужные данные. Запрашивается хост (например, localhost). Запрашивается путь к проверяемому файлу и сам файл (например, /files/doc/index.php) и запрашивается путь и файл, в котором хранятся переменные, которые будут участвовать в проверке($ перед переменной обязательно, например $variable).
Пример файла с переменными
После чего, подсчитывается количество переменных и соответственно делаются запросы(POST, GET, COOKIE) к скрипту с каждой переменной, например
GET http://localhost/index.php?tryvar=tryval
host: localhost
Connection: close
POST http://localhost/index.php
host: localhost
Connection: close
Content-type: application/x-www-form-urlencoded
Content-Length: 13
tryvar=tryval
GET http://localhost/index.php
Cookie: tryvar=tryval
host: localhost
Connection: close
Далее получается ответ от сервера (если в теле полученного документа есть слово error или warning, то тут же на экран выводится извещение и запрос при котором, была получена ошибка) подсчитывается размер ответа. Создается массив с размерами ответов сервера. Далее, высчитывается математическое ожидание размера ответа, дисперсия и среднеквадратическое отклонение. И идёт выборка "странных" значений размера ответа. Выводится схематический текстовый график вероятности выпадения размеров и справа список параметров. Ниже выводится список "странных" размеров с методом и переменной, при которой этот ответ был получен.
2. Требования
Код написан на php с ООП(собственно, учился ООП тут =)).
Требуется php5+ и включенные сокеты.
3. Назначение
1)Быстрый анализ локального php-скрипта на баги.
Ставим проверяемый скрипт на сервер. Вводим хост и путь к файлу. На запрос пути к файлу с переменными указываем тот же файл, что висит на сервере. Скрипт пропарсит проверяемый файл на переменные и далее пойдет проверка.
2)Удаленный анализ на php-баги.
Указываем удаленный хост и путь к сприпту. Указываем путь к файлу с набором переменных. Смысл в том, что если на проверяемом хосте включен register_globals = on и в скрипте есть ошибки, связанные с переменными, то скрипт их должен выявить.
3. Установка
Весь скрипт состоит из главного файла и нескольких подключаемых классов. Надо лишь разархивировать архив в одну папку.
(с) AFoST 10.02.2009 4:10
__________________
Появляюсь редко. Важные дела в реале.
Последний раз редактировалось AFoST; 16.02.2009 в 18:32..
|
|
|

10.02.2009, 13:30
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
Сообщение от AFoST
VarTryer v. 1.0 [console]
Вообщем то утопия, я такое патылся сделать , но в итоге понял чтоэто возможно сделать только разобрав php и прикрутить в каждую функцию некоторый код. То есть сделать что то типа дезендера , но с другим уклоном, попытки сделать это в других языках не имеет смысла. Так как надо не просто парсить скрипт и вызывать с разными параметрами, а трасировать его выполнение, чтобы видеть как меняются значения так сказать динамических переменных.
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
Последний раз редактировалось SQLHACK; 10.02.2009 в 13:33..
|
|
|

10.02.2009, 13:44
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от SQLHACK
Так как надо не просто парсить скрипт и вызывать с разными параметрами, а трасировать его выполнение, чтобы видеть как меняются значения так сказать динамических переменных.
Ты имеешь в виду динамический анализатор, это не то, что выложил ТС. (Кстати динамический анализатор вполне реально и интересно было бы разрботать)
А по поводу этого конкретного скрипта, можно делать как всякие ХСпайдеры, и прочие SSS: Т.е. собирать на страницах все линки, все формы и просто экспериментировать с установкой из значений (просто обычный фаззинг).
P.S.
То что сделал ТС смахивает на мой статический анализатор, и по сути делает тоже самое. Но всё равно в итоге автору придётся сделать тоже, что и было сделано у меня - разбирать синтаксическое дерево, многие конструкции регекспом не разберёшь (ну т.е. разберёшь конечно, но трудоёмкость неоправданная).
P.S.S.
Так же без AST нельзя выявить зависимости переменных друг от друга, и поиск будет слепым. Пример:
if($_GET[a]==1)
eval($_GET[b]);
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
Последний раз редактировалось Qwazar; 10.02.2009 в 13:55..
|
|
|

10.02.2009, 13:58
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Далее, высчитывается математическое ожидание размера ответа, дисперсия и среднеквадратическое отклонение. И идёт выборка "странных" значений размера ответа. Выводится схематический текстовый график вероятности выпадения размеров и справа список параметров. Ниже выводится список "странных" размеров с методом и переменной, при которой этот ответ был получен.
Распиши плз подробнее, вот эту часть. Что это и зачем?
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
|
|
|

10.02.2009, 14:28
|
|
Reservists Of Antichat - Level 6
Регистрация: 20.08.2008
Сообщений: 328
Провел на форуме: 7144817
Репутация:
1503
|
|
Qwazar, а идею по хспайдеру на пхп которую ты подал, я уже подхватил, на следующей неделе наверное выложу! 
__________________
You may say I'm a dreamer
But I'm not the only one
|
|
|

10.02.2009, 14:35
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от SQLHACK
То есть сделать что то типа дезендера , но с другим уклоном, попытки сделать это в других языках не имеет смысла.
Кстати для С++ есть динамические анализаторы (и библиотеки для удобной разработки динамических анализаторов).
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
|
|
|

10.02.2009, 15:21
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
>>Скрипт для быстрой проверки php-скриптов на баги.
это фаззером ховется...
|
|
|

10.02.2009, 18:55
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Далее, высчитывается математическое ожидание размера ответа, дисперсия и среднеквадратическое отклонение. И идёт выборка "странных" значений размера ответа. Выводится схематический текстовый график вероятности выпадения размеров и справа список параметров. Ниже выводится список "странных" размеров с методом и переменной, при которой этот ответ был получен.
Распиши плз подробнее, вот эту часть. Что это и зачем?
Делается несколько запросов, вычисляется средний показатель интересующих параметров, вычисляется допустимый разброс.
А далее скрипт тебя информирует если получает результаты выбивающиеся из полученного распределения.
Вроде так.
|
|
|

10.02.2009, 19:07
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от Kaimi
А далее скрипт тебя информирует если получает результаты выбивающиеся из полученного распределения.
Вроде так.
Для чего?
Код:
if($a==1) echo "вы ввели лажу";
if($a==2) echo "вы ввели лажу";
...
if($a==N) echo "вы ввели лажу";
if($a==N+1) echo "а вот теперь всё клёво + очень много текста"
Как я понимаю, подозрительным будет последний вариант? В чём практический смысл такого подхода?
З.Ы.
Я не критикую, просто пытаюсь понять.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
Последний раз редактировалось Qwazar; 10.02.2009 в 19:31..
|
|
|

10.02.2009, 19:53
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Как я понимаю, подозрительным будет последний вариант? В чём практический смысл такого подхода?
Наверное для случаев когда сервер не выдает ошибку. Или скажем для подобного кода
$query = "....";
$result = mysql_query($query) or exit($query);
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|