Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Уязвимости (https://forum.antichat.xyz/forumdisplay.php?f=74)
-   -   Обход проверки на SQL-inj (https://forum.antichat.xyz/showthread.php?t=27352)

FurA 16.11.2006 18:18

Обход проверки на SQL-inj
 
Доброго времени суток, опять я и опять с вопросом о SQL-inj.

Есть функция, которая проверяет входящую переменную на banwords. Очень хочется обойти эту проверку. В примудростях MSSQLа я не разбираюсь, поэтому прошу помощи.
Код:

function antiinjection($str) {
        $banwords = array ("'", ",", ";", "--");
        if ( eregi ( "[a-zA-Z0-9]+", $str ) ) {
                $str = str_replace ( $banwords, '', strtolower ( $str ) );
        } else {
                $str = NULL;
        }
        return $str;
}

Заранее спасибо

ПиСи
Еще раз повторюсь - платформа MSSQL

_Great_ 16.11.2006 18:21

жестко они :) пробиться вроде никак низя..
хотя странно они сделали - нафиг одновременно и регулярка на буквы-цифры и еще вырезание спецсимволов, которые никогда не попадут под эту регулярку

Alexkz 18.11.2006 17:33

_Great_, в принципе да, лишнего много, но, видишь,они не сделали эти две фильтрации параллельно, а сделали зависимыми!
Т.е. если переменная $str содержит НЕ только латинские буквы обоих регистров и цифры
if ( eregi ( "[a-zA-Z0-9]+", $str ) )
тогла происходит фильтрация на спец символы!
Хотя я вообще не пойму зачем такая фильтрация...
Я считаю переменные нужно фильтровать
htmlspecialchars() и addslashes()
В мускуле
htmlspecialchars() и если идет запись в базу mysql_escape_string()
Если целлочисленное значение(например id и прочее), тогда только intval() !


Время: 08:55