В этой статье в основном представлены принцип и решение уязвимости загрузки файлов ASP chr(0). Уязвимость chr(0) позволяет обойти проверку расширения при загрузке файлов. Это очень опасная уязвимость. Друзья, нуждающиеся в помощи, могут обратиться к ней.
Когда мы используем ASP для разработки функции загрузки файлов, чтобы запретить пользователям загружать троянские программы, мы часто ограничиваем загрузку некоторых файлов. Распространенный метод — определить, соответствует ли расширение загружаемого файла правилам. Вы можете использовать его. правильную строковую функцию для получения загруженного файла. Последние четыре цифры имени файла можно легко определить, но в нем есть очень опасная уязвимость, и это уязвимость chr(0). Пожалуйста, прочтите дальше. подробности.
1. Для начала объясните, что такое chr(0)?
В ASP вы можете использовать функцию chr() для вызова кода ASCII, где chr(0) означает, что вызов является конечным символом. Проще говоря, когда строка содержит символ chr(0), это только начало chr. (0) могут быть выведены символы, символы после chr(0) выводиться не будут. Приведите пример для иллюстрации:
Скопируйте код кода следующим образом:
<%response.write "HTMer.com"&chr(0)&"Добро пожаловать"%>
Если вы запустите приведенный выше код в IIS, будет ли он выводить только «HTMer.com»? Следующее «Добро пожаловать» исчезло, поскольку при чтении chr(0) оператор считается завершенным.
2. Принцип загрузки уязвимостей Chr(0):
Предположим, что я настроил программу ASP на загрузку только файлов jpg. Вот как я использую уязвимость chr(0) для загрузки трояна ASP:
Предположим, что существует троянский файл ASP с именем htmer.asp. Я переименовал его в htmer.asp.jpg. Вы видели пробел в середине? Когда мы получаем имя файла, это пространство считается chr(0). Когда мы используем right("htmer.asp .jpg",4) для его просмотра, это действительно .jpg, но когда мы на самом деле читаем htmer.asp . jpg, и при создании файла система считает, что все закончилось, когда она читает chr(0), поэтому последующий .jpg не может быть выведен. Имя загруженного файла автоматически генерируется как htmer.asp. Что это значит? Я думаю, ты должен это знать.
3. Методы решения уязвимости chr(0)
Решение состоит в том, чтобы проверить, есть ли chr(0) в имени загруженного файла, и напрямую заменить символ chr(0) функцией замены в ASP.