нужна помощь с инъекцией sql - PullRequest
7 голосов
/ 13 октября 2011

Во-первых, я не пытаюсь взломать или сделать что-то незаконное.Думаю, я дам вам знать, ребята.У меня есть клиент, который хочет, чтобы я сделал некоторые изменения в его системе, когда я смотрел на него, я заметил, что НИЧЕГО не удалось избежать.Я не шучу, ничего не сбежит.Я объяснил ему, что такая система небезопасна.Затем он продолжает говорить мне, что у него была такая система в течение нескольких лет, и ничего не произошло.Мне нужно показать ему, что его система небезопасна, но я действительно не знаю, выполнить ли SQL-инъекцию.Вот несколько запросов, которые используют $ _GET и не экранированы.

SELECT *,DATE_FORMAT(joined,'%M %d, %Y') as \"Joined\" FROM `members` WHERE `name` LIKE '".$ltr."%' ORDER BY points DESC LIMIT $page,50

Вот еще один:

SELECT * FROM groups WHERE id=$thisladder[grid]

Единственное, что я вижу, что "может" очистить $ _GET, этоэта функция:

if (!ini_get('register_globals')) {
   $superglobals = array($_SERVER, $_ENV,
       $_FILES, $_COOKIE, $_POST, $_GET);
   if (isset($_SESSION)) {
       array_unshift($superglobals, $_SESSION);
   }
   foreach ($superglobals as $superglobal) {
       extract($superglobal, EXTR_SKIP);
   }
}

Возможно, что вышеприведенная функция может очищать переменные.И да, система также использует глобальные переменные регистров, что тоже плохо.

Я также сделал резервную копию, на всякий случай.

Ответы [ 3 ]

6 голосов
/ 13 октября 2011

Не могу сказать, что лучше, чем http://xkcd.com/327/.

image

But then again, as Марк Б говорит, забудь SQL-инъекцию, register_globals намного, намного хуже.Никогда не думал, что смогу увидеть его , эмулировав , на всякий случай, если он выключен.

5 голосов
/ 13 октября 2011

Несколько забавных вещей, показывающих твоему «другу», насколько глупым является его код:

http://example.com/badscript.php?_GET[]=ha+ha+I+pwned+your+GET+superglobal
http://example.com/badscript.php?_SESSION[issuperuser]=1

Такого рода вещи ТОЧНО почему register_globals такая откровенная дебильная идеяи (после слишком долгого FAR), наконец, по умолчанию установлено на OFF.

Забыл SQL-инъекцию - этот идиотский фрагмент кода разрешает удаленное внедрение PHP-переменных.

1 голос
/ 13 октября 2011

, если код входа выглядит примерно так:

$query = 'SELECT id FROM users WHERE username=\''.$_POST['username'].'\' AND password=\''.$_POST[password].'\'';
$result = mysql_query($query);
etc, etc...

попробуйте ввести это в поля для входа в систему

username = "whatever"
password = "' OR 1"

имеет смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...