Пример #2 Листинг статей... и некоторых паролей (для любой базы данных)

 

<?php

 

$query = "SELECT id, name, inserted, size FROM products

WHERE size = '$size'

ORDER BY $order LIMIT $limit, $offset;";

$result = odbc_exec($conn, $query);

 

?>

 

Статическая часть запроса может комбинироваться с другим SELECT-запросом, который выведет все пароли:

 

' union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable; --

 

Если этот запрос (использующий ' и --) присоединить к значению одной из переменных, используемых для формирования $query, то запрос заметно преобразится.

Команды UPDATE также могут использоваться для атаки. Опять же, есть угроза разделения инструкции на несколько частей и присоединения дополнительного запроса. Также взломщик может видоизменить выражение SET. В этом случае потенциальному взломщику необходимо обладать некоторой дополнительной информацией о структуре базы данных для успешного манипулирования запросами. Эту информацию можно получить, проанализировав используемые в форме имена переменных, либо просто перебирая все наиболее распространенные варианты названия соответствующих полей (а их не так уж и много).

 

Пример #3 От восстановления пароля... до получения дополнительных привилегий (для любой базы данных)

<?php

 

$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";

 

?>

 

Но злоумышленник может ввести значение ' or uid like'%admin%'; -- для переменной $uid для изменения пароля администратора или просто присвоить переменной $pwd значение "hehehe', admin='yes', trusted=100 " (с завершающими пробелами) для получения дополнительных привелегий. При выполнении запросы переплетаются:

 

<?php

 

// $uid == ' or uid like'%admin%'; --

$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

 

// $pwd == "hehehe', admin='yes', trusted=100 "

$query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ...;";

 

// … - пробелы

?>

 

Пугающий пример того, как на сервере баз данных могут выполняться команды операционной системы.