一句话脚本系列之统计文件夹下各种后缀名的文件个数

本文介绍了如何使用Linux命令行工具find、cut、sort和uniq,通过一句脚本来统计文件夹下各文件类型的数量。详细解释了各个命令的参数用法,例如find的-maxdepth、-type、-name,cut的-f和-d,以及uniq的-c和-i,以在Windows系统中通过Cygwin实现文件后缀名统计。

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

欢迎转载!转载时请注明出处:http://blog.youkuaiyun.com/nfer_zhuang/article/details/42582425

引言

使用场景:

我所在的QQ群中最近聊的是热火朝天,也就导致着我的QQ缓冲文件夹的大小在疯涨,满500M的时候QQ客户端就会提示用户需要清除一下缓存文件夹了。其中缓冲文件夹中最大的部分就是各种图片文件,包括各种格式的图片。在删除前,我就想按照图片格式进行一下分类后备份到其他文件夹内。这个时候我就需要做一下统计了:

  1. 当前文件夹下有几种格式(后缀名)的图片
  2. 每种格式的图片有多少个文件
一般用法:
  1. 打开文件管理器,并进入到待统计的文件夹内

  2. 按照类型进行排序
  3. 依次选中指定后缀名的所有文件,在文件管理器中状态栏中有选中了多少个文件的统计,记录下来

  4. 再选择下一个后缀名的所有文件并统计和记录,直到所有都统计完成

一句话脚本用法:

find -type f -name "*.*" | cut -f3 -d'.' | sort | uniq -c -i  (递归查找当前文件夹下的所有子文件夹)
或
<pre name="code" class="plain">find -maxdepth 1 -type f -name "*.*" | cut -f3 -d'.' | sort | uniq 
原理:文件上传漏洞是指用户上传了个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命 令的能力。 服务器解析漏洞 apache:绕过程序检测:当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止,如果都不 认识,则会暴露其源代码。 iis:当建*.asa ,*.asp,*.cer格式的文件夹时,其目录下的任何扩展名的文件都将被IIS当做asp文件进行解 析。 nginx:任意文件名后边加xxx.php,就会被当成php文件解析。 绕过方法 如何判断是个黑名单还是白名单 :上传个不存在的后缀名,如果上传成功则表示是黑名单检测, 如果上传失败则表示是白名单检测。 1.黑名单 a.后缀名不完整 .php5 .phtml等 b. .htacess配置文件(先把php文件改成png格式上传绕过验证,在上传个.htaccess()文件,把png 图片当php解析) c.大小写,双写 d.空格,点,空格点 e.特殊字符::$DATA :不让他检测后缀名。 2.白名单:%00截断1.php%00.jpg,图片马,网站的脚本类型解析图片 3其他:/.绕过,直接加/.,数组加/. 条件竞争(几率很小) 二次渲染:原理 在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行 替换更新,处理完成后,根据我们原有的图片生成个新的图片并放到网站对应的标签进行显示。 给你个站怎么测: 1.先找到可以文件上传的地方,比如头像,附件啊等等 2.先上传个正常图片,看功能点是否可以正常使用 3.上传正常图片( 抓包修改文件后缀名为对应网站脚本语言 )可以检测出网站是否对上传进行了文件 后缀名的监测。 4.成功·--->没有 5.失败——>有检测,接着判断白名单or黑名单 防御: 1. 对上传文件进行类型和大小验证。 2. 避免直接将文件上传到 Web 目录下。 3. 检查文件名和内容。 4. 重新命名上传的文件。 5. 禁止执行上传的脚本。 如何绕过WAF 1、添加垃圾数据 2、多加个filename 3、交换name和filename的顺序等 H5 条件竞争型的文件上传漏洞 查看源码可发现该文件先上传后检查;因此在上传和删除之间存在个极短的时间差,如果我们能利用 这极短的时间差就能导致条件竞争,也就是直发包让它来不及检查和删除,然后在这期间访问上传的 文件再创建个新文件(它不会检查新生成的文件),之后我们连接这个新文件。 功能是自己创建文件一句话木马文件: <?php $f=fopen("newnew.php","w"); fputs($f,'<?php @eval($_POST['123']);?>'); ?> 上传抓包在发送到intruder,进行多次发包,然后访问该文件,抓包,发送到intruder,使不断访问 test.php文件,照成文件删除和访问条件竞争,从来产生新文件
03-27
<think>嗯,用户让我解释文件上传漏洞的原理和相关绕过方法,还有如何测试和防御。首先,我需要确保自己理解所有提到的内容,比如服务器解析漏洞中的Apache、IIS、Nginx的不同处理方式。这部分可能需要进步确认是否正确,例如Apache是否真的会从后向前解析扩展名,而IIS的文件夹解析漏洞是否确实存在。 接下来是绕过方法,用户提到黑名单和白名单的检测方式,需要判断用户上传不存在的后缀名来判断属于哪种名单。这里可能需要举例说明,比如上传个.test后缀,如果成功则是黑名单,失败则是白名单。然后黑名单绕过的具体方法,如不完整后缀、.htaccess文件、大小写、特殊字符等,这些都需要逐解释清楚。 白名单绕过中的%00截断,需要说明这是利用旧版PHP的漏洞,可能现在不太适用,但用户可能想知道历史方法。图片马和二次渲染的概念需要解释清楚,特别是二次渲染如何覆盖原本的恶意代码,导致失效,这时候可能需要使用GIF或手动调整来保留恶意代码。 测试步骤部分,用户提到的流程需要结构清晰,先找上传点,传正常图片,再尝试修改后缀。成功与否的判断,进而区分检测类型。防御措施需要强调综合方法,如类型验证、重命名、禁止执行等。 绕过WAF的部分,用户提到添加垃圾数据、多个filename字段、交换顺序等,可能需要解释这些方法如何干扰WAF的检测逻辑。条件竞争漏洞要说明时间差的重要性,以及如何利用多次发包和访问来创建持久化的文件。 需要注意用户的描述中有些技术细节是否正确,比如Apache的解析漏洞是否准确,或者IIS的文件夹解析是否存在。例如,Apache的解析漏洞通常是指如果文件名为test.php.xxx,Apache可能会解析为php,但实际行为可能因配置而异。需要确认这些点,避免误导用户。 另外,二次渲染的具体例子,比如处理图片时,服务器可能重新生成图片,覆盖恶意代码,所以需要找到未被处理的部分插入代码。可能需要更详细的步骤说明。 在防御部分,除了提到的措施,可能还需要补充其他方法,如使用安全的文件存储服务,设置文件权限,定期扫描等。 最后,条件竞争的例子中,用户提供的PHP代码是否正确,比如是否应该使用单引号或双引号,以及如何构造Payload。同时,解释如何利用Burp Suite的Intruder进行多次上传和访问请求,以制造竞争条件。 需要确保整个回答逻辑清晰,分步骤解释,帮助用户从原理到实践全面理解文件上传漏洞,同时注意技术细节的准确性,避免错误信息。可能还需要提醒用户这些方法仅用于学习目的,切勿用于非法活动。</think>### 文件上传漏洞详解 --- #### **、漏洞原理** 文件上传漏洞是指攻击者通过上传可执行脚本文件(如PHP、ASP),利用服务器解析特性或检测机制缺陷,使恶意文件在服务器端被执行,从而获取系统控制权。 --- #### **二、服务器解析漏洞** 1. **Apache解析特性** - 若扩展名不被识别(如`.test`),Apache会**从后向前解析**,直到遇到合法扩展名。 - 示例:上传文件`test.php.abc` → 若`.abc`未定义,Apache可能解析为PHP文件。 2. **IIS文件夹解析漏洞** - 创建`*.asp`、`*.asa`等格式的文件夹时,其目录下**所有文件**会被IIS当作ASP脚本解析。 - 示例:文件夹名为`upload.asp`,内部文件`1.jpg`会被解析为ASP。 3. **Nginx解析漏洞** - 若配置不当,文件名后添加`.php`(如`test.jpg/xxx.php`)可能被Nginx当作PHP解析。 --- #### **三、检测绕过方法** ##### **1. 判断黑名单/白名单** - **测试方法**:上传个不存在的后缀(如`.test`)。 - **上传成功** → 黑名单(未禁止未知后缀)。 - **上传失败** → 白名单(仅允许特定后缀)。 ##### **2. 黑名单绕过** - **a. 不完整后缀** 使用`.php5`、`.phtml`等冷门PHP变种后缀。 - **b. .htaccess攻击** 1. 上传`.htaccess`文件,内容: ```apache AddType application/x-httpd-php .png ``` 2. 上传PNG图片马(实际为PHP代码),服务器将解析为PHP。 - **c. 大小写/双写绕过** - 大小写:`Test.PhP` - 双写:`test.pphphp` → 过滤后变为`test.php`。 - **d. 特殊符号** - 空格:`test.php ` - 点:`test.php.` - `::$DATA`(Windows特性):`test.php::$DATA` → 文件实际保存为`test.php`。 ##### **3. 白名单绕过** - **a. %00截断** 适用于旧版本PHP,利用空字符截断路径: ```http POST /upload.php HTTP/1.1 Content-Disposition: form-data; name="file"; filename="test.php%00.jpg" ``` → 最终保存为`test.php`。 - **b. 图片马+解析漏洞** 1. 制作包含PHP代码的图片(如`exiftool -Comment="<?php system($_GET['cmd']);?>" image.jpg`)。 2. 结合服务器解析漏洞(如Apache解析特性)执行代码。 - **c. 二次渲染绕过** - **问题**:服务器对图片进行格式转换(如压缩),可能覆盖恶意代码。 - **绕过**: - **GIF格式**:在文件尾部追加代码(GIF89a允许注释区)。 - **手动调整**:生成二次渲染后的图片,对比差异并插入代码到未覆盖区域。 --- #### **四、实战测试流程** 1. **定位上传点** - 头像、附件、富文本编辑器等位置。 2. **上传正常图片** - 验证功能是否正常,确认无基础校验。 3. **修改后缀测试** - 抓包修改文件名为`test.php`,若上传失败则存在检测机制。 4. **判断检测类型** - 通过`.test`测试黑/白名单。 5. **针对性绕过** - 根据黑/白名单选择对应绕过方式。 --- #### **五、防御措施** 1. **严格校验文件类型** - 使用MIME类型、文件头校验(非单纯扩展名)。 2. **重命名文件** - 生成随机文件名(如`md5(时间戳).jpg`)。 3. **隔离存储** - 文件存放到非Web目录,通过代理脚本访问。 4. **禁用脚本执行** - 配置服务器禁止上传目录执行脚本(如`.htaccess`中`php_flag engine off`)。 5. **限制文件内容** - 检查文件内容是否合法(如图片需包含有效像素数据)。 --- #### **六、WAF绕过技巧** 1. **添加垃圾数据** - 在请求中插入大量无用参数,干扰WAF检测。 2. **多filename字段** ```http Content-Disposition: form-data; name="file"; filename="test.jpg" Content-Disposition: form-data; name="file"; filename="test.php" ``` 3. **交换字段顺序** - 将`name`和`filename`顺序调换。 --- #### **七、条件竞争漏洞** - **原理**:文件上传后未及时删除,利用时间差访问并执行。 - **利用步骤**: 1. 上传生成新文件的恶意脚本: ```php <?php $f = fopen("shell.php", "w"); fputs($f, '<?php @eval($_POST["cmd"]); ?>'); ?> ``` 2. 使用工具(如Burp Intruder)**持续上传+访问**,使服务器来不及删除临时文件。 3. 成功生成`shell.php`后,连接蚁剑/菜刀。 --- #### **八、总结** 文件上传漏洞的利用需结合服务器特性、检测机制缺陷及防御绕过技巧。防御需采用**多层级校验**(类型、内容、重命名)并严格限制执行权限。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值