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

10.11.2009, 18:26
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
%00 -> %2500, при аплоаде
Почему при загрузке (что в линукс что в виндувс), частичка имени файла преобразуется в %2500 (у меня так)(а было %00) ? (ручным аплоадом делал (т.е. вручную снифал и отправлял пакеты на загрузку))
Отправлял пакеты с помощью HTTPREQ (пробывал и InetCrack'ом отправлять, все тоже самое)
Помогите собственно с ответом (сабж заслуживает отдельной темы, так как в "Вопросах о уязв." мне не помогли)
Последний раз редактировалось wolmer; 11.11.2009 в 13:51..
|
|
|

10.11.2009, 18:33
|
|
Участник форума
Регистрация: 18.06.2008
Сообщений: 222
Провел на форуме: 2223440
Репутация:
648
|
|
Что-то мне других возможностей и не представляется, кроме функции urlencode или аналогичных ей. Там точно нет никакой обработки в коде? Может просмотрел чего? Выложи код.
|
|
|

10.11.2009, 18:35
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Сообщение от Root-access
Что-то мне других возможностей и не представляется, кроме функции urlencode или аналогичных ей. Там точно нет никакой обработки в коде? Может просмотрел чего? Выложи код.
Код:
<html>
<head>
<title>Загрузка файлов на сервер</title>
</head>
<body>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<form method="post" enctype="multipart/form-data">
<input type="file" name="filename"><br>
<input type="submit" value="Загрузить"><br>
</form>
<?php
if($_FILES["filename"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["filename"]["tmp_name"],
"/home/user/data/www/site.ru/".$_FILES["filename"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["filename"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["filename"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["filename"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["filename"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
?>
</body>
</html>
|
|
|

11.11.2009, 02:19
|
|
Новичок
Регистрация: 23.05.2007
Сообщений: 19
Провел на форуме: 237993
Репутация:
7
|
|
$_FILES["filename"]["name"] => urldecode($_FILES["filename"]["name"])
и пропадут неведомые %20 и т.д.
|
|
|

11.11.2009, 13:53
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Сообщение от wix
$_FILES["filename"]["name"] => urldecode($_FILES["filename"]["name"])
и пропадут неведомые %20 и т.д.
Т.е. так вот на ровном месте нельзя отрубить нулл байтом конец? (без urldecode) 
|
|
|

17.11.2009, 05:29
|
|
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме: 2375131
Репутация:
1695
|
|
Сообщение от wolmer
Ап! Все еще нужен ответ! (но теперь на #5 пост)
При передаче в названии файла %00, у меня так и остается %00.
Но при передачи параметров методом 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, не знаю и возможно ли?
__________________
Cервер cs 1.6
cs.antichat.net:27015
Последний раз редактировалось (Dm); 23.11.2009 в 00:29..
|
|
|

17.11.2009, 05:47
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
у меня ничего не преобразутся, тестил и %00 в середине имени файла, и в конце имени, и с magic_quotes=ON, и OFF - результат всегда один - как назвал, так и заливается, без изменений, ось Linux
Для загрузки использовался код автора темы
PS: Автор, выложи свой phpinfo
Как передать null byte, не знаю и возможно ли?
Скорее всего никак, если в коде нет последующей "неаккуратной" обработки имени файла после загрузки, которое иногда встречается, например, когда проверяют, картинка ли файл
Последний раз редактировалось Pashkela; 17.11.2009 в 05:57..
|
|
|

21.11.2009, 01:09
|
|
Постоянный
Регистрация: 12.05.2009
Сообщений: 395
Провел на форуме: 4761503
Репутация:
229
|
|
Сообщение от Pashkela
у меня ничего не преобразутся, тестил и %00 в середине имени файла, и в конце имени, и с magic_quotes=ON, и OFF - результат всегда один - как назвал, так и заливается, без изменений, ось Linux
Для загрузки использовался код автора темы
PS: Автор, выложи свой phpinfo
Скорее всего никак, если в коде нет последующей "неаккуратной" обработки имени файла после загрузки, которое иногда встречается, например, когда проверяют, картинка ли файл
phpinfo:http://dump.ru/file/3779897
|
|
|

21.11.2009, 01:17
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
не, никак, а то что было ночью, унесли в РОА. Вот так-то, спать меньше надо
Iceangel_: аяяяй, злые роавцы, все себе в группу тащут... (((
Никто ничего никуда не переносил, опять у тебя паранойя =(
Последний раз редактировалось Iceangel_; 21.11.2009 в 01:27..
|
|
|

23.11.2009, 03:00
|
|
Leaders of Antichat
Регистрация: 25.01.2007
Сообщений: 341
Провел на форуме: 3372120
Репутация:
2565
|
|
Вообще, тема с передачей нулл байта через имя файла в глобальном массиве $_FILES очень интересна, например, мне не удалось сделать это ни разу передачей %00 или \0, \х00 и т.д. ни через имя файла, ни через тампер дату и перехват пакета HTTP.
Видимо это действительно связано с
Сообщение от (Dm)
2. В случае загрузки файлов, используется метод:
multipart/form-data
Он означает что передаются бинарные данные, соотвественно эти данные не будут url декодированными и %00, так и останется %00
Ранее где-то проходила информация, что это возможно и на основе этого были вроде даже баги каких-то двигов...
В частности, в статье Минаева "Роковые ошибки php" https://forum.antichat.ru/thread54355.html упоминается такой метод обхода
На первый взгляд вполне логично , что файл с именем file.jpg.php не пройдет проверку , однако попробуем вставить null bute в имя файла и
в конечном виде получится чтото вроде my_data.php%00.jpg . Удачная попытка и наш файл залить с именем my_data.php .
который будет работать только в результате дополнительного преобразования через urldecode($_FILES['userfile']['name']).
Я могу лишь предположить, что данная уязвимость успешно работала на старых версиях ПХП, когда массива $_FILES не было, а использовался $HTTP_POST_FILES.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|