![]() |
%00 -> %2500, при аплоаде
Почему при загрузке (что в линукс что в виндувс), частичка имени файла преобразуется в %2500 (у меня так)(а было %00) ? (ручным аплоадом делал (т.е. вручную снифал и отправлял пакеты на загрузку))
Отправлял пакеты с помощью HTTPREQ (пробывал и InetCrack'ом отправлять, все тоже самое) Помогите собственно с ответом (сабж заслуживает отдельной темы, так как в "Вопросах о уязв." мне не помогли) |
Что-то мне других возможностей и не представляется, кроме функции urlencode или аналогичных ей. Там точно нет никакой обработки в коде? Может просмотрел чего? Выложи код.
|
Цитата:
Код:
<html> |
$_FILES["filename"]["name"] => urldecode($_FILES["filename"]["name"])
и пропадут неведомые %20 и т.д. |
Цитата:
|
Цитата:
Но при передачи параметров методом GET, POST, php декодирует url закодированные символы, например %00 => null byte; %27 => ' 1. В случае с обычными POST запросами, используется метод: application/x-www-form-urlencoded Он означает что данные передаются url кодированными, поэтому php их декодирует. 2. В случае загрузки файлов, используется метод: multipart/form-data Он означает что передаются бинарные данные, соотвественно эти данные не будут url декодированными и %00, так и останется %00 Как передать null byte, не знаю и возможно ли? |
у меня ничего не преобразутся, тестил и %00 в середине имени файла, и в конце имени, и с magic_quotes=ON, и OFF - результат всегда один - как назвал, так и заливается, без изменений, ось Linux
Для загрузки использовался код автора темы PS: Автор, выложи свой phpinfo Цитата:
|
Цитата:
|
не, никак, а то что было ночью, унесли в РОА. Вот так-то, спать меньше надо :)
Iceangel_: аяяяй, злые роавцы, все себе в группу тащут... ((( Никто ничего никуда не переносил, опять у тебя паранойя =( |
Вообще, тема с передачей нулл байта через имя файла в глобальном массиве $_FILES очень интересна, например, мне не удалось сделать это ни разу передачей %00 или \0, \х00 и т.д. ни через имя файла, ни через тампер дату и перехват пакета HTTP.
Видимо это действительно связано с Цитата:
В частности, в статье Минаева "Роковые ошибки php" https://forum.antichat.ru/thread54355.html упоминается такой метод обхода Цитата:
Я могу лишь предположить, что данная уязвимость успешно работала на старых версиях ПХП, когда массива $_FILES не было, а использовался $HTTP_POST_FILES. |
например при перехватке и редактировании запроса с помощью Tamper Data, после подстановки в конец файла %00 я нажимаю кнопку раскодировать, после этой операции передается именно null байт, а не %00. Да и кстати, в таком случае бага реально работает)
|
Цитата:
Пример: PHP без Suhosin, magic_quotes не имело значения Скрипт up.php: PHP код:
Цитата:
Цитата:
|
Цитата:
+1 Тоже проверил - просто обрезает. Цитата:
ЗЫ Тема открыта. |
(Dm), все таки не могу понять как у тебя получилось обрезать если:
Content-Type: multipart/form-data; (т.е. %00 оставляет -> %00 (т.е. не преобр. в нулл байт)) Конечно меня токо что осенило не закодированный нулл байт подставить (это у тебя еще в посте #12, да?) Но я не представляю как будет выглядеть символ нулл байта Подправьте меня если я ошибся |
Цитата:
Цитата:
Цитата:
|
ребята , вы че:???
все так и работает, обход ereg/eregi при аплоаде Причем дата тампер работает в этом случае прикрасно у меня то есть жмешь раскодить все спец символы превращаются в %xx вот и вставляешь %00 туда, и все гуд. вы кстати проверьте то что режется как вы говорите, на strlen , так как нул байт может проссто не отображать ваши тулзы при дампе |
Цитата:
PHP код:
Код:
1.php |
Цитата:
если я правильно понял, то вы nullbyte подставляете непосредственно в имя файла (то есть в его реальное имя на диске). а каким методом вы это осуществляете? с клавиатуры вроде не введешь, а перименовать в имя содержащее null char с помощью php или к примеру С вроде нельзя... ? |
2smc нуллбайт вставляется в пакете в названии файла,
скачай inetcrack и попробуй вариации (например таким способом можно было обходит с нуллбайтом в FCKeditor) пример пакета Код:
POST /fckeditor/editor/filemanager/connectors/php/connector.php?Command=FileUpload&Type=File&CurrentFolder=%2F HTTP/1.0 |
Цитата:
можно. "\x00" |
Цитата:
т.е. передаем file_name.php%2500.jpg Сервер обрабатывает строку (переводит HEX значения в символы) После обработки получается что сервер сохр. файл на сервере под именем: file_name.php%00.jpg Поэтому берем какой нибуть сендер и вручную правим имя файла (т.е. чтобы было не %2500 (при отправке) а %00 (т.е. чтобы сам нулл байт, принимал сервер а не что либо другое)) получается примерно так: передаем file_name.php%00.jpg Сервер обрабатывает строку... После обработки получается что сервер сохр. файл на сервере под именем: file_name.php Т.е. сработал наш нулл байт (при условии что сервер будет принимать content-type: application/x-www-form-urlencoded) |
wolmer. именно то, что меня и интересовало. спсб за разъяснения. освоил tamper data - все работает
|
| Время: 22:04 |