PDA

Просмотр полной версии : Hack-конкурс


~Fenix~
25.03.2006, 00:54
Объединенный Открытый Проект проводит конкурс на взлом системы управлением сайта на базе форума Intellect Board. Цель конкурса - обнаружить в Intellect Board критические уязвимости, взломать с их использованием официальный сайт http://intboard.ru (http://intboard.ru/) и прислать на адрес подробное описание уязвимости и совершенного взлома. Фактом взлома считается вписывание в нижнюю строку copyright-сообщения логина на форуме или адреса Email пользователя, осуществившего взлом (подсказка: данная строка хранится в файле config/iboard.php и может быть изменена из Центра Администрирования).

Письма с описанием взлома следует посылать на адрес http://intboard.ru/images/support.gif.

Призы конкурса выплачиваются только через платежные системы 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 (http://intboard.ru/) (например, тестового форума Intellect Board - http://test.intboard.ru (http://test.intboard.ru/))
4. При отказе сообщить сведения о совершенном взломе и найденной уязвимости.
5. При обнаружении попыток внедрения после взлома вредоносного кода или создания пользователей с повышенными правами, не указанных в описании совершенного взлома.

http://intboard.ru/index.php?f=95

censored!
25.03.2006, 03:20
Величина приза составляет 10 WMZ при выплате через WebMoney или 300 рублей при выплате через Яндекс-Деньги
Ради таких денег народ ломать не будет. Точнее - может и будет учавствовать, то точно не ради денег.

Хм... Получилось случайно: вот исходник файла file.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,"")!==false || strpos($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("\'","ь",$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,"")!==false || strpos($curword,"[/code]")!==false || strpos($curword,"")!==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("<","&lt;",$text);
$text=str_replace(">","&gt;",$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

~Fenix~
25.03.2006, 07:41
Ну да, я согласен что денег они зажлобили, но ради интереса, испытать свои силы, ведь это новый форум и про его уязвимости никто незнает (хотя кто там знает)...

Error404
29.03.2006, 10:53
Было же уже (http://forum.antichat.ru/thread15749.html)...