Во-первых, я не пытаюсь взломать или сделать что-нибудь незаконное. Думал, что дам вам знать, ребята. У меня есть клиент, который хочет, чтобы я внес некоторые изменения в его систему, когда я смотрел на него, я замечаю, что НИЧЕГО не удалось избежать. Я не шучу, ничего не ускользает. Я объяснил ему, что иметь такую систему небезопасно. Затем он продолжает рассказывать мне, что у него была такая система уже несколько лет, и ничего не произошло. Мне нужно показать ему, что его система небезопасна, но я действительно не знаю, как выполнить 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);
}
}
Возможно, что функция выше может очищать переменные. И да, система тоже использует глобальные регистры, что тоже плохо.
Я тоже сделал резервную копию, на всякий случай.