Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

23.06.2009, 16:48
|
|
Новичок
Регистрация: 11.12.2008
Сообщений: 4
Провел на форуме: 10819
Репутация:
0
|
|
PHP+SQL+C inj
Добрый день.
Самому сделать не получается, опишу проблему тут:
Общий алгоритм работы:
Существует некая программа X, в которой существует текстовое поле,содержимое этого поля при нажатии "Отправить" вноситься в базу на сервере.
Далее на сайте, зайдя по некому адресу мы можем наблюдать внесенные данные.
Итоги исследований:
На первый взгляд в поле филтруется вообще все:
Написав туда что-то типа ' " ; -- // /* char(39) и др варианты мы видим 100% внесенных данных на сайте.
Тоесть логически предполагаем что каждый из символов, дабы без искажений отображаться на сайте в базе должен иметь вид: \\ \' \" т.е. экранироваться.
На сайте существует код аля
echo $переменная, содержащая значение из базы.
Следовательно подставив введенные+экранированные данные мы какраз получаем конечную строку: ' " ; -- // /* char(39) и т.п.
Отсюда можно сделать вывод что вставка любого символа кроме буквоцифр приводит к экранировке и внесении в базу. Т.е. на сайте лишь отображается уже фильтрованный текст, и воздействовать на него можно только из программы ибо 100% символов будет экранировано из проги.
Исследование на XSS Дало положительный результат, весело загрузилась во фрейме порнушка(html), вылезло alert()(javascript), ну и VBScript тоже показал работоспособность.
Т.к. как ява, так и VBscript выполняются на стороне клиента (для справки: площадка на сервере linux,freebsd 99%), следовательно добиться чегото больше чем XSS врядли получится.
Копаем дальше:
Наша задача победить экранировку символов, дабы получить возможность выполнять как SQL так и PHP-inj.
Во-первых определим какие могут быть способы экранировки символов:
1) Что-то типа magic_quotes, т.к. каждый символ-не буква экранируется. (Наиболее вероятно)
2) Кодирование кода в base64 или по другому алгоритму и хранения этого в базе, с последующей расшифровкой при выводе (Маловероятно, ибо тогда в функции echo на сайте в 100% случаев вылезала ошибка при введении символа " или '.)
Во-вторых нужно подобрать способы убийства этого:
1) Как рекомендуется везде использовать альтернативные методы записи типа char() и прочее (на деле эффективность не показали)
2) Использование того-же base64 шифрования(допустим мы занесем в базу чтото типа base64_decode(code); , где code='<?php phpinfo();?> как пример, но т.к. на сайте стоит обычные echo,следовательно функция не будет использована по назначению.
3) Использовать альтернативные методы вставки php тегов(<% %> <script lang=php> и тп) (на практике не работает)
По пункту 3 следует отметить что вставляя код <?php phpinfo(); ?> на сайте я получаю пустую строку, НО в исходном коде страницы, светится "<?php phpinfo(); ?>" т.е. интерпритатор php не хочет её обрабатывать, считая текстом, это возможно только при конструкции echo '<?php phpinfo(); ?>'; (протестил дома).
Продолжаю исследования, кто что может посоветовать? Сам пока не додумался...
Последний раз редактировалось Tamrang; 23.06.2009 в 16:51..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|