PDA

Просмотр полной версии : sql-inj


Майор
31.07.2005, 19:19
http://club.germany.ru/cgi-bin/discount/hyperseek.cgi?detail=123+UNION+SELECT+'test1','tes t2','test3','test4','null','test6','test7','test8' ,'TUT','test10','test11','test12','test13','test14 ','test15','test16','test17','test18','test19','te st20','test21','test22','test22','test23','test24' ,'test25',null,null,null,null,null,null,null,null, null,null,null,null,null,null,null,null,null,null/*

Подскажите, чёт у меня не получается, union я так понял работате, немогу найти ни одной таблицы...
но у меня не получается даже столбец с id вывести из известной таблицы "hyperseek_links" .... в чё моя ощибка ?

ShAnKaR
31.07.2005, 22:57
.........FROM hyperseek_links /*
и всё ok
колонки: id,name,email
есть таблица location

Майор
01.08.2005, 00:48
спасибо =)
чёт я стормозил...
ещё такой вопрос : других способов кроме как угадать имена таблиц и столбцов не существует ?

Zadoxlik
01.08.2005, 13:28
Анализ сайта. Если известно имя одной таблицы можно попробовать подобрать имя другой с бОльшими шансами на успех. Скажем префикс hyperseek тоже говорит о том что скорее всего он будет и в другой таблице, во всяком случае уже известно что автор любит делать имена таблиц с префиксами.

Так же иногда можно увидеть имя таблицы в префиксе передаваемой переменной (просто автору скрипта так было удобнее, не знаю почему). Скажем вызывается новость таким способом ?news_id=45. Мало того, что очень часто news_id - то поле в таблице новостей, так еще иногда случается и такое, что news - это имя самой таблицы.

Зачастую имя таблицы можно увидеть вызвав ошибку SQL запроса даже если SQL-инъекцию провести не удастся (можно вызвать ошибку, однако сделать какой-то человеческий запрос не позволит скрпт, который как-то по кривому рубит передаваемую переменную).