使用php修改指定文件后缀

本文介绍了一种使用PHP脚本批量将当前目录下所有.asp文件的后缀名修改为.php的方法,同时提供了获取文件扩展名的多种方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近要将asp后缀的修改成php,因懒于一个个修改。又觉得php跟Qt一样都是高级语言了,一般高级语言都有提供对获得的内容进行增删改查的函数。于是乎,就上网搜了下,还真不少,故些将所用心得总结下来。

目标:将当前目录下的asp后缀改成php,而不影响其它“后缀格式的文件”,而且只是针对“当前文件夹”,对当前文件夹内包含的文件夹的文件不进行修改。

  代码如下:

<?php 
function foreachDir($dirname)
{ 

 if(!is_dir($dirname))
	 {
	  echo "{$dirname} not effective dir";
	  exit();
	 }
 $handle=opendir($dirname); //打开目录

while (($file = readdir($handle))!==false)  //读取目录
{ 
	if($file!="." && $file!='..')
	{ 
	  if(is_dir($dirname.$file))
		{ 
			echo $dirname.$file."<br/>"; 
			//foreachDir($dirname.$file);  //如果注释号去掉,将会递归修改文件夹内的文件夹文件
		}
	  else
		{ 
			echo "--".$dirname."/".$file."<br/>"; 
			 $temp = substr($file, strrpos($file, '.')+1);  //获取后缀格式
		    if ($temp == "asp")	
			   {
				$pos = strripos($file,'.');  //获取到文件名的位置
				$filename = substr($file,0,$pos);  //获取文件名
				rename($dirname.'/'.$file,$dirname.'/'.$filename.'.php'); //替换为php后缀格式。
			  }

		} 
	} 
 } 

} 
	 
foreachDir('../traverseMendFilename');
?>

另外:附上获取文件扩展名的四种方法: http://www.jb51.net/article/29765.htm

### CTF Web 文件上传 PHP 后缀绕过技巧 在CTF竞赛中,Web文件上传挑战通常涉及绕过后端对文件类型的验证以实现恶意脚本的运行。以下是几种常见且有效的PHP后缀绕过方法: #### 1. 利用大小写敏感性 某些服务器配置可能未严格区分文件扩展名的大写字母与小写字母。例如,在Linux环境下,默认情况下文件名是区分大小写的,但如果目标系统的过滤逻辑忽略了这一点,则可以通过修改文件扩展名为`.Php`、`.pHp`等形式来绕过检测[^5]。 #### 2. 使用扩展名技术 部分应用程序仅检查最后一个扩展名是否合法(如.jpg),而忽略前面的内容。因此可以构造类似这样的文件名称:`shell.php.jpg` 或 `shell.php;.jpg` 。当这些文件被保存至特定路径并访问时,可能会触发PHP解释器执行其中嵌入的有效载荷[^1]。 #### 3. 修改MIME类型 一些框架不仅依赖于文件名判断合法性,还会依据HTTP请求头中的Content-Type字段决定处理方式。此时可尝试伪造合适的MIME类型提交给服务端,比如设置成image/jpeg却实际传送包含PHP代码的数据流[^4]。 #### 4. 配置特殊文件 利用Apache或其他webserver支持的一些特性文件来进行攻击也是一个不错的选择。例如创建一个user.ini或者.htaccess文件重新定义哪些应该被视为php脚本来解析和运行[^3]。另外还有像Sethandler指令那样强制指定某个资源按php标准对待[^2]。 #### 示例代码片段展示如何构建简单的测试payloads: ```php // Example Payload for .htaccess method <FilesMatch "muma\.jpg$"> SetHandler application/x-httpd-php </FilesMatch> <?php echo shell_exec('whoami'); ?> ``` 上述例子展示了怎样通过自定义规则让图片也能当作php程序被执行起来,并简单演示了一个命令注入样例用于获取当前用户的用户名信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值