Функции Язык программирования PHP

gmp_init

(PHP 4 >= 4.0.4)

gmp_init - создаёт GMP-число.

Описание

resource gmp_init (mixed number)

Создаёт GMP-число из целого числа или строки. Строковое представление может быть десятеричным или 16-ричным. В последнем случае строка должна начинаться с 0x.

Пример 1. Создание GMP-числа
<?php 
$a = gmp_init (123456); $b = gmp_init ("0xFFFFDEBACDFEDF7200"); ?>

Примечание: нет необходимости вызывать эту функцию, если вы хотите использовать целое число или строку вместо GMP-числа в GMP-функциях вроде gmp_add(). Аргументы функции автоматически конвертируются в GMP-числа, если такая конвертация возможна и необходима, используя те же правила, что и для gmp_init().


Назад Оглавление Вперёд
gmp_hamdist Вверх gmp_intval

Инъекция SQL

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

// $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 
...;"

Устрашающий пример того, как может быть получен доступ к командам уровня ОС на некоторых хостах БД.
Пример 4-9. Атака на ОС-хост БД (MSSQL Server)
$query = "SELECT * FROM products WHERE id LIKE '%$prod%'"; $result 
= mssql_query($query);

Если взломщик отправляет значение a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- в $prod, то $query будет:

$query = "SELECT * FROM products WHERE id LIKE '%a%' exec master..xp_cmdshell 
'net user test testpass /ADD'--"; $result = mssql_query($query);