请帮助我理解这个 PHP hack,我怎样才能绕过这个 re

我找到了一个 php 代码,它只能包含该主题的文件,但该文件包含数字。必须绕过此重新。


我尝试使用 file_put_contents 生成具有其他文件名的文件,但只有 index.html 中的代码。PHP 可以运行。所以我认为只绕过这个重新,没有竞争条件


<?php    

 include_once("fl2g.php"); 

 $filename = $_GET['filename']; 

 $filename = $_GET['content']; 

    if(preg_match("/[^a-z\.]/", $filename) == 1) { 

        echo "Hacker"; 

        die(); 

    } 

    $files = scandir('./');  

    foreach($files as $file) { 

        if(is_file($file)){ 

            if ($file !== "index.php") { 

                unlink($file); 

            } 

        } 

    } 

    file_put_contents($filename, $content ); 

   ?>

我希望绕过这个重新


慕少森
浏览 166回答 2
2回答

喵喵时光机

正则表达式指出:“^”匹配不在集合“az”中的任何字符。(小写“a”到“z”,和一个句号“.”)Preg_match() 的返回值如果为假则为 1,如果为真则为 0。if&nbsp;(preg_match("\[^a-z\.]\",&nbsp;"abc.xyz")&nbsp;==&nbsp;1)&nbsp; //&nbsp;would&nbsp;return&nbsp;true(?)&nbsp;because&nbsp;preg_match()&nbsp;returns&nbsp;false&nbsp;,&nbsp;but&nbsp;false&nbsp;=&nbsp;1;&nbsp;so&nbsp;it&nbsp;returns&nbsp;true.&nbsp;i&nbsp;think&nbsp;:/那么它似乎删除了目录中的所有文件?编辑:要在文件名中添加一个数字,您可以添加这样的内容$filename&nbsp;=&nbsp;"001".$filename;&nbsp;//makes&nbsp;"001ZZZ"我对 php/regex 有点生疏

qq_花开花谢_0

只需将数字添加到正则表达式。if(preg_match("/[^a-z0-9\.]/",&nbsp;$filename)&nbsp;==&nbsp;1)&nbsp;{
打开App,查看更多内容
随时随地看视频慕课网APP