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

  #5  
Старый 14.06.2009, 02:52
Grey
Познавший АНТИЧАТ
Регистрация: 10.06.2006
Сообщений: 1,113
С нами: 10483586

Репутация: 5826


По умолчанию

Цитата:
Сообщение от Велемир  
Чет я не догнал тему о слешах.Без них никак? Смотрю на твой пример и ничего не понимаю(кроме селект версион()
* в этой мессаге я тебе некоторые вещи цветом пометил.

Ну смотри переменная $ttitle - ей присваиваешь значение '\';
Т.е. слеш.

Код:
mysql_query("INSERT INTO main SET title='$ttitle', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Получается следующее:

Код:
mysql_query("INSERT INTO main SET title='\', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Т.е. он экранирует кавычку идущую после него.
Значит она не будет учавствовать в запросе и будет отображаться как текст, до следующей кавычки (в предыдущем примере я ошибся с $email):

Всё между этими кавычками - будет восприниматься как текст и будет значением колонки url.

Код:
mysql_query("INSERT INTO main SET title='\', description='$description', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Теперь ты можешь присвоить переменной $description значение и никакие кавычки тебе не помешают.
Предположим значение $description = ', url=0, cat1=0, cat2=0, cat3=0,gin=0, gout=0, moder_vote=0, email={СКЛ инъекция}, type=0; -- '

В запросе будет следующее:

Код:
mysql_query("INSERT INTO main SET title='\', description=', url=0, cat1=0, cat2=0, cat3=0,gin=0, gout=0, moder_vote=0, email={СКЛ инъекция}, type=0; -- ', url='$url', cat1='$c1', cat2='0', cat3='0', gin=0, gout=0, moder_vote=0, email='$email', type=0;") or die(mysql_error());
Отбросим лишее (то, что будет за комментировано):

Код:
mysql_query("INSERT INTO main SET title='\', description=', url=0, cat1=0, cat2=0, cat3=0,gin=0, gout=0, moder_vote=0, email={СКЛ инъекция}, type=0; -- ") or die(mysql_error());
Далее объясню тебе как юзать такую инъекцию:

1. Или смотришь на то, что добавилось в поле email (если верить названию - оно где то должно отображаться).
2. Или юзаешь more than 1 row (ищи статью Електа).

P.S. А вообще вот тебе две статьи, милый, иди и изучай:

Атака на WEB. Миссия невыполнима - а там находишь "[ Фрагментированная SQL-inj ]"
more than 1 row

Последний раз редактировалось Grey; 14.06.2009 в 15:14..
 
Ответить с цитированием