Вопрос по поводу запроса к MySQL

12 3
R
На сайте с 13.09.2009
Offline
38
1218

Народ, помогите плиз.

Проверяю на SQL иньекцию.

Переменная GET = -8+UNION+SELECT+1,aaa.tb_aaa.username,aaa.tb_aaa.username,aaa.tb_aaa.username,1,1,1,1,1,1,1,1,1,1+from+aaa.tb_aaa

В данном случаи запрос проходит


<?PHP
require("config.php");
$dd = $_GET["dd"];
$ddx = mysql_query("SELECT * FROM tb_task WHERE id=$dd") or die(mysql_error());
$ddxx = mysql_fetch_array($ddx);

echo $ddxx["author"];
?>

В вот в этом нет:


<?PHP
require("config.php");
$dd = $_GET["dd"];
$ddx = mysql_query("SELECT * FROM tb_task WHERE id='$dd'") or die(mysql_error());
$ddxx = mysql_fetch_array($ddx);

echo $ddxx["author"];
?>

потому как id='$dd' $dd при запросе идёт как строка. Как решит этот вопрос?

CD
На сайте с 21.10.2004
Offline
82
#1

Rufus, ?dd=' blablabla..., если верно понял.

Просто экранировать мало, надо обрабатывать сами данные переменных.

Отличная конвертация женского трафика. (http://tinyurl.com/394ayz3) Второй месяц - в подарок! Core2Duo E6600 2x2.4ГГц / 4ГБ / 2x250ГБ => $68/мес. (http://tinyurl.com/E6600)
R
На сайте с 13.09.2009
Offline
38
#2

Не не не, я не сканирую, я делаю иньекцию. Уже известны таблицы и количество полей. (Проверяю скрипт! НИЧЕГО НЕ ВЗЛАМЫВАЮ!)

[Удален]
#3
$dd = $_GET["dd"];

вот так сделайте

$dd = (int)$_GET["dd"];

а вообще - учим мат часть: http://php.net/mysql_real_escape_string

R
На сайте с 13.09.2009
Offline
38
#4

Вы наверное не поняли, я не пытаюсь ничего защитить. Я проверяю есть ли в этом месте SQL иньекция и мне нужно её сделать

Dreammaker
На сайте с 20.04.2006
Offline
569
#5

Этот форум не для того, чтобы советовали как ломать сайты.

CD
На сайте с 21.10.2004
Offline
82
#6

Rufus, есть, я же писал. Подставьте значение типа:

script.php?dd=1' AND pass !='

в запрос, и он будет работать, ведь выйдет что-то типа SELECT * FROM tb_task WHERE id='1' AND pass !='' (например, если это авторизация, то авторизироваться без пароля можно). Ну, я не асс в этом деле, но по идее все верно.

Иньекция возможна везде, где нет фильтрации данных.

[Удален]
#7
CompDocs:
Иньекция возможна везде, где нет фильтрации данных.

или экранирования

CD
На сайте с 21.10.2004
Offline
82
#8

bearman, экранирования чего именно?

[Удален]
#9
CompDocs:
bearman, экранирования чего именно?

того же, чего и фильтрования

R
На сайте с 13.09.2009
Offline
38
#10
bearman:
или экранирования

не в курсе, что сейчас все переменные гет и post и так экранируются?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий