为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕少森 2021-12-03 18:56:03
我找到了一个 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 );    ?>我希望绕过这个重新
查看完整描述

2 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

正则表达式指出:“^”匹配不在集合“az”中的任何字符。(小写“a”到“z”,和一个句号“.”)

Preg_match() 的返回值如果为假则为 1,如果为真则为 0。

if (preg_match("\[^a-z\.]\", "abc.xyz") == 1) 
// would return true(?) because preg_match() returns false , but false = 1; so it returns true. i think :/

那么它似乎删除了目录中的所有文件?

编辑:要在文件名中添加一个数字,您可以添加这样的内容

$filename = "001".$filename; //makes "001ZZZ"

我对 php/regex 有点生疏


查看完整回答
反对 回复 2021-12-03
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

只需将数字添加到正则表达式。

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


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 165 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信