Здравствуйте.
В общем есть сервачек игровой один, на его сайте вкручена система голосования. Вкручена она таким образом...
Пройдя по ссылке:
_xттп://_host_/vote/voting.php
Вы попадаете на страничку голосования , нечего особого эта страничка не представляет, формочка куда надо вписать логин и пара кнопок.
Внутри этой странички встроен JScript:
PHP код:
...
<script language="javascript" type="text/javascript">
function game(){
log=document.forms["form1"].login.value;
window.open('http://_host_/vote/game.php?login='+log);
window.open('http://сайт_сюда_перекидывает');
}
<script>
...
<form name="form1">
<input type="text" name="login">
<input type="hidden" id="vid" name="id">
...
<input type="button" value="Проголосовать" onclick="game()">
...
значит после того как вы вписываете логин и тискаете кнопку "проголосовать", у вас открывается две страницы, одна из которых (_хттп://_host_/vote/game.php?login=логин) содержит содержит сообщение о том, что вам была вставлена кука и проголосовать повторно вы не сможете в течении "X" времени.
Кука выглядит вот так:
PHP код:
vote gday: 10
vote gh:00
vote gm:55
vote gmount: 12
Если исправить значения куки, допустим значение "vote gday" изменить с "10" на "фывфы" или на " ' " и перегрузить (_хттп://_host_/vote/game.php?login=
Логин)
то выдает страницу с следующим текстом:
Warning: mktime() expects parameter 5 to be long, string given in /var/www/_host_/vote/game.php on line 23
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 27
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 28
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 29
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 30
Логин , спасибо за ваш голос ...
Если же перегрузить страницу без указания конкретного значения Login (_хттп://_host_/vote/game.php?login= ), то выдает страницу с таким тестом:
Warning: mktime() expects parameter 5 to be long, string given in /var/www/_host_/vote/game.php on line 23
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 27
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 28
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 29
Warning: Cannot modify header information - headers already sent by (output started at /var/www/_host_/vote/game.php:23) in /var/www/_host_/vote/game.php on line 30
, спасибо за ваш голос ...
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 2 in /var/www/_host_/vote/script.php on line 8
изменяя значения (gday,gh,gm,gmount):
PHP код:
vote gday: 10
vote gh:00
vote gm:55
vote gmount: 12
в результате страница ничем почти не изменяется, кроме первой записи:
Warning: mktime() expects parameter ->5 (1,2,3)<- to be long, string given in /var/www/_host_/vote/game.php on line 23
насколько я понимаю значения кук попадает в функцию mktime() в виде параметров, функция не может воспринять передаваемые параметры и выдает ошибку.
Терь вопрос является ли эта вся штука уязвимостью и как эту уязвимость можно использывать, имеетли место sql-inj и можно ли как нибудь достать расс рута mysql? Можно ли как нить залить шелл?
Пробовал через телнет конектится к серваку на 3306, оказалось что открыт удаленный доступ к MySQL.
Насколько мне известно на серваке (Unix,little-endian).