РКН SQL иньекция

BumerANG

Новичок
Статус
offline
Регистрация
02.12.2017
Сообщения
3
Репутация
0
Всю голову сломал, не могу придумать как обойти фильтр. Вот код защиты:
PHP:
<?php
defined('PROTECTOR') or die('Error: restricted access');

class InitVars {
# Недопустимые слова в запросахREPLACE
        var $deny_words = array('UNION','CHAR','REPLACE','DELETE','SELECT','UPDATE','GROUP','ORDER','BENCHMARK','union','char','insert','delete','select','update','group','order','benchmark');

function InitVars() {
}

# Метод конвентирует суперглобальные массивы $_POST, $_GET в перемнные
# Например : $_GET['psw'] будет переобразовано в $psw с тем же значением
function convertArray2Vars () {

        foreach($_GET as $_ind => $_val) {
                global $$_ind;
                if(is_array($$_ind)) $$_ind = htmlspecialchars(stripslashes($_val));
        }

        foreach($_POST as $_ind => $_val) {
                global $$_ind;
                if(is_array($$_ind)) $$_ind = htmlspecialchars(stripslashes($_val));

        }
}

# Метод проверяет $_GET и $_POST переменные на наличие опасных данных и SQL инъекций
function checkVars() {
        //Проверка опасных данных.
        foreach($_GET as $_ind => $_val) {
                        $_GET[$_ind] = htmlspecialchars(stripslashes($_val));

                        $exp = explode(" ",$_GET[$_ind]);
                        foreach($exp as $ind => $val) {
                                if(in_array($val,$this->deny_words)) $this->antihack("Запрещено!Доступ закрыт!<br> Ваш ip адресс помечен!");
                        }
        }

        foreach($_POST as $_ind => $_val) {
                        $_POST[$_ind] = htmlspecialchars(stripslashes($_val));

                        $exp = explode(" ",$_POST[$_ind]);
                        foreach($exp as $ind => $val) {
                                if(in_array($val,$this->deny_words)) $this->antihack("Запрещено!Доступ закрыт!<br> Ваш ip адресс помечен!");
                        }
        }

}

function antihack($msg) {
    echo '<font color="red"><b>Antihack error: </b></font>'.$msg.'<br>\n';
    die;
}

}


?>
Может кто знает?
 

BumerANG

Новичок
Статус
offline
Регистрация
02.12.2017
Сообщения
3
Репутация
0
Эмм.. так понял никто не поможет(
 

Fly

Резидент
Статус
offline
Регистрация
11.05.2016
Сообщения
176
Репутация
189
Ну первое, что тут видно - это массив $deny_words и то, как он проверяется.

Напомню что регистр букв в запросе SQL не имеет значения (т.е. 'SELECT', 'select' и 'selEct' - одно и то же).

Значит, что мы уже можем обойти эту часть.

А поскольку htmlspecialchars фильтрует только html сущности(такую кавычку ['] по умолчанию она не фильтрует), то мы уже можем работать с БД