Объединенный Открытый Проект проводит конкурс на взлом системы управлением сайта на базе форума Intellect Board. Цель конкурса - обнаружить в Intellect Board критические уязвимости, взломать с их использованием официальный сайт http://intboard.ru и прислать на адрес подробное описание уязвимости и совершенного взлома. Фактом взлома считается вписывание в нижнюю строку copyright-сообщения логина на форуме или адреса Email пользователя, осуществившего взлом (подсказка: данная строка хранится в файле config/iboard.php и может быть изменена из Центра Администрирования). Письма с описанием взлома следует посылать на адрес . Призы конкурса выплачиваются только через платежные системы WebMoney и Яндекс-Деньги (по выбору победителя конкрурса). Величина приза составляет 10 WMZ при выплате через WebMoney или 300 рублей при выплате через Яндекс-Деньги. Дата начала конкурса - 1 марта 2006 года. Конкурс проводится в несколько туров. При обнаружении очередной уязвимости конкурс приостанавливается до того момента,когда будет исправлена уязвимость, после чего начинается следующий тур. Признаком того, что в данный момент проводится очередной тур конкурса, является наличие в copyright-сообщении строки "Если вы читаете это, то конкурс продолжается". О завершении конкурса будет объявлено отдельно в новостях проекта Intellect Board. В том случае если до объявления о завершении очередного тура конкурса было произведено несколько взломов, то выплата призов следующим образом: если для взлома использовались различные уязвимости, то каждому из победителей конкурса выплачивается призовой фонд в полном объеме. Если использовалась одна и та же уязвимость или аналогичные уязвимости (уязвимости одного типа, находящиеся в пределах одной функции), то выигрыш делится поровну между тем, кто первым осуществил взлом, и тем, кто прислал наиболее технически грамотное и подробное описание совершенного взлома (степень грамотности и подробности определяется участниками Объединенного Открытого Проекта). Всвязи с этим настоятельно рекомендуется указывать в письме точное время взлома и IP-адрес, с которого он был совершен. В конфликтных ситуациях разрешение споров о приоритете взлома определяется по логам Intellect Board и логам Web-сервера для сайта intboard.ru. При несоответствии предоставленных данных об IP и времени взлома данным из логов форума и сервера участник снимается к конкурса. В выплате призов может быть отказано в следующих случаях: 1. Взлом был осуществлен не через уязвимость в скриптах Intellect Board, а иными способами (включая, но не ограничиваясь подобором пароля для пользователей System и XXXX Pro, захватом почтового ящика XXXX Pro и последующим извлечением пароля на этот ящик, использованием уязвимостей хостинга). 2. Если в результате взлома была нарушена работоспособность форума или произошла потеря данных или был нанесен материальный ущерб Объединенному Открытому Проекту или третьим лицам. 3. При использовании при взломе сайтов, расположенных в доменах 3-ьего уровня зоны intboard.ru (например, тестового форума Intellect Board - http://test.intboard.ru) 4. При отказе сообщить сведения о совершенном взломе и найденной уязвимости. 5. При обнаружении попыток внедрения после взлома вредоносного кода или создания пользователей с повышенными правами, не указанных в описании совершенного взлома. http://intboard.ru/index.php?f=95
Ради таких денег народ ломать не будет. Точнее - может и будет учавствовать, то точно не ради денег. Хм... Получилось случайно: вот исходник файла file.php PHP: <? /* XXXX Pro's Application PHP Programming Interface (XAPhPI) for Intellect Board 2 (c) 2005, XXXX Pro, United Open Project Visit us online: http://openproj.ru */ function &getvar($name) { if ((strpos($name,"_text")!==false && $name!="pv_text" && $name!="pm_text") || $name=="f_rules") { if (isset($_GET[$name])) $tmp = $_GET[$name]; elseif (isset($_POST[$name])) $tmp= $_POST[$name]; } else { if (isset($_GET[$name])) $tmp = htmlspecialchars($_GET[$name]); elseif (isset($_POST[$name])) $tmp= htmlspecialchars($_POST[$name]); } $tmp=db_slashes($tmp); return $tmp; } function &build_select($sql,$value="") { $res = db_query($sql,$GLOBALS['link']); $tmp = ""; while ($tmpdata=db_fetch_row($res)) { if ($tmpdata[0]==$value) $tmp.="<option value=\"".$tmpdata[0]."\" selected>".$tmpdata[1]; else $tmp.="<option value=\"".$tmpdata[0]."\">".$tmpdata[1]; } db_free_result($res); return $tmp; } function &build_sql($prefix) { $tmp = ""; $prefixlen = strlen($prefix); foreach ($_POST as $name=>$value) { if (substr($name,0,$prefixlen)==$prefix && strpos($name,"__")===false && $name!=$prefix."_id") { if (strpos($name,"_text")===false) $value=db_slashes(htmlspecialchars($value)); else $value=db_slashes($value); if ($tmp) $tmp.=", "; $tmp .= "$name=\"".$value."\""; } } return $tmp; } function &build_sql_all($prefix) { $tmp = ""; $prefixlen = strlen($prefix); foreach ($_POST as $name=>$value) { if (substr($name,0,$prefixlen)==$prefix) { if ($tmp) $tmp.=", "; $tmp .= "$name=\"".db_slashes($value)."\""; } } return $tmp; } function check($expr) { if ($expr>0) echo "checked"; } function &set_select($select,$value) { $select=preg_replace("/selected\s+>/is","",$select); $select=preg_replace("/<option\s+value=\"?$value\"?\.*?>/is","<option value=\"$value\" selected>",$select); echo $select; } function &build_pages($count,$start,$perpage,$ref) { $reflen = strlen($ref); if ($ref[$reflen-1]!="?" && $ref[$reflen-1]!="&") { if (!strpos($ref,"?")) $ref.="?"; else $ref.="&"; } if (!$perpage) $perpage=10; $numpages = ceil($count/$perpage); $asterisk = floor($start/$perpage)*$perpage; if ($numpages>1 || $start>0) { $pages = MSG_pages; $number=0; for ($i=1; $i<=$numpages; $i++) { if ($number!=$start || $start=="all") { $pages.="<a href=\"$ref"."st=".$number."\">$i</a> "; if ($asterisk==$number && $start!="all") $pages.=" * "; } else $pages.="$i "; $number+=$perpage; } if ($start=="all") $pages.="#"; else $pages.="<a href=\"$ref"."st=all\">#</a> "; } return $pages; } function &getip() { $ip; if ($_SERVER["HTTP_CLIENT_IP"]) $ip = $_SERVER["HTTP_CLIENT_IP"]; elseif ($_SERVER["HTTP_X_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; elseif ($_SERVER["HTTP_FORWARDED_FOR"]) $ip = $_SERVER["HTTP_FORWARDED_FOR"]; else $ip = $_SERVER["REMOTE_ADDR"]; $ip = str_replace(";",",",$ip); if (strpos($ip,",")!==false) $ip=substr($ip,0,strpos($ip,",")-1); return $ip; } function &untransliterate($text) { $text = str_replace("["," [",$text); $text = str_replace("]","] ",$text); $text = str_replace("<"," <",$text); $text = str_replace(">","> ",$text); $words = explode(" ",$text); $skip=0; $skiptag=0; foreach ($words as $curword) { if (strpos($curword,"[url")!==false || strpos($curword,"[code]")!==false || strpos($curword,"[email")!==false || strpos($curword,"<a")!==false || strpos($curword,"[_")!==false || $skiptag) { $skiptag=1; } else { if (strpos($curword,"[")!==false || strpos($curword,"<")!==false || $skip) { $skip = 1; } elseif (!array_key_exists($curword,$GLOBALS['smiles'])) { $curword = str_replace("ya","я",$curword); $curword = str_replace("yo","ё",$curword); $curword = str_replace("yu","ю",$curword); $curword = str_replace("ay","ай",$curword); $curword = str_replace("oy","ой",$curword); $curword = str_replace("iy","ий",$curword); $curword = str_replace("yy","ый",$curword); $curword = str_replace("uy","уй",$curword); $curword = str_replace("ey","ей",$curword); $curword = str_replace("sch","щ",$curword); $curword = str_replace("sh","ш",$curword); $curword = str_replace("ch","ч",$curword); $curword = str_replace("zh","ж",$curword); $curword = str_replace("\'","ь",$curword); $curword = str_replace("\"","ъ",$curword); $curword = str_replace("`e","э",$curword); $curword = str_replace("`i","й",$curword); $curword = str_replace("Ya","Я",$curword); $curword = str_replace("Yo","Ё",$curword); $curword = str_replace("Yu","Ю",$curword); $curword = str_replace("Ay","Ай",$curword); $curword = str_replace("Oy","Ой",$curword); $curword = str_replace("Iy","Ий",$curword); $curword = str_replace("Yy","Ый",$curword); $curword = str_replace("Uy","Уй",$curword); $curword = str_replace("Ey","Ей",$curword); $curword = str_replace("Sch","Щ",$curword); $curword = str_replace("Sh","Ш",$curword); $curword = str_replace("Ch","Ч",$curword); $curword = str_replace("Zh","Ж",$curword); $curword = str_replace("YA","Я",$curword); $curword = str_replace("YO","Ё",$curword); $curword = str_replace("YU","Ю",$curword); $curword = str_replace("AY","АЙ",$curword); $curword = str_replace("OY","ОЙ",$curword); $curword = str_replace("IY","ИЙ",$curword); $curword = str_replace("YY","ЫЙ",$curword); $curword = str_replace("UY","УЙ",$curword); $curword = str_replace("EY","ЕЙ",$curword); $curword = str_replace("SCH","Щ",$curword); $curword = str_replace("SH","Ш",$curword); $curword = str_replace("CH","Ч",$curword); $curword = str_replace("ZH","Ж",$curword); $curword = str_replace("`E","Э",$curword); $curword = str_replace("`I","Й",$curword); $lo_lat=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","r","s","t","u","v","y","z"); $lo_rus=array("а","б","ц","д","е","ф","г","х","и","ж","к","л","м","н","о","п","р","с","т","у","в","ы","з"); $up_lat=array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","R","S","T","U","V","Y","Z"); $up_rus=array("А","Б","Ц","Д","Е","Ф","Г","Х","И","Ж","К","Л","М","Н","О","П","Р","С","Т","У","В","Ы","З"); $curword =str_replace($lo_lat,$lo_rus,$curword); $curword =str_replace($up_lat,$up_rus,$curword); } if (strpos($curword,"]")!==false) $skip=0; } if (strpos($curword,"[/url]")!==false || strpos($curword,"[/code]")!==false || strpos($curword,"[/email]")!==false || strpos($curword,"_]")!==false) { $skiptag=0; $skip=0; } $untrans .= $curword." "; } $untrans = str_replace(" [","[",$untrans); $untrans = str_replace("] ","]",$untrans); $untrans = str_replace(" <","<",$untrans); $untrans = str_replace("> ",">",$untrans); return $untrans; } function transliterate($text) { $up_rus=array("А","Б","В","Г","Д","Е","Ё","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ь","Ы","Ъ","Э","Ю","Я"); $up_lat=array("A","B","V","G","D","E","Yo","J","Z","I","I","K","L","M","N","O","P","R","S","T","U","F","H","C","Ch","Sh","Sch","","Y","","E","Yu","Ya"); $lo_rus=array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ь","ы","ъ","э","ю","я"); $lo_lat=array("a","b","v","g","d","e","yo","j","z","i","i","k","l","m","n","o","p","r","s","t","u","f","h","c","ch","sh","sch","","y","","e","yu","ya"); $text=str_replace($up_rus,$up_lat,$text); $text=str_replace($lo_rus,$lo_lat,$text); return $text; } function &build_date_field($field,$time) { $tmp = "<input type=text name=".$field."_day size=2 maxlength=2 value=\"".date("d",$time)."\">."; $tmp .= "<input type=text name=".$field."_mon size=2 maxlength=2 value=\"".date("n",$time)."\">."; $tmp .= "<input type=text name=".$field."_year size=4 maxlength=4 value=\"".date("Y",$time)."\">"; return $tmp; } function &get_date_field($field) { $tmp = mktime(0,0,0,getvar($field."_mon"),getvar($field."_day"),getvar($field."_year")); return $tmp; } function &iptonum($ip) { $ipdata=explode(".",$ip); $num=0; for($i=0;$i<4;$i++) $num=$num * 256+floatval($ipdata[$i]); return $num; } function &numtoip($num) { $str=floor($num/(256*256*256))."."; $num = ($num/(256*256*256)-floor($num/(256*256*256)))*256*256*256; $str.=floor($num/(256*256))."."; $num = $num % (256*256); $str.=floor($num /256)."."; $num = $num % (256); $str.=$num; return $str; } function textarea($text) { $text=str_replace("<","<",$text); $text=str_replace(">",">",$text); return $text; } function strips(&$el) { if (is_array($el)) foreach($el as $k=>$v) strips($el[$k]); else $el = stripslashes($el); } Еще хреновина какая-то вылазит: http://intboard.ru/index.php?o=users&desc=desc&m=profile&a=listusers
Ну да, я согласен что денег они зажлобили, но ради интереса, испытать свои силы, ведь это новый форум и про его уязвимости никто незнает (хотя кто там знает)...