CTF之文件操作漏洞

一、文件上传漏洞 1、文件上传检测:
(1)js检测(前端校验):查看源码!禁用js或burp抓包修改
(2)mime类型检测: 是描述消息内容类型的因特网标准。

  • Content-Type(如下):

    CTF之文件操作漏洞
    文章图片
    Content-Type.jpeg
  • 测试方式
    上传正常的文件
  • 绕过方法
    上传正常的文件,然后burp抓包修改文件内容
    上传恶意的文件,然后burp抓包修改MIME类型
(3)文件后缀名检测:黑名单或者白名单
  • 黑名单检测?
    上传文件合法性校验使用黑名单的方式,判断上传文件后缀,由于黑名单不全被攻击者绕过导致上传漏洞。
    黑名单(绕过):内置解析配置、服务器特殊配置
服务器特殊配置 如果在Apache中.htaccess的配置有效。且可被上传。 那可以尝试在.htaccess中写入: SetHandler application/x-httpd-php sec.jpg 即可以php脚本解析

  • 白名单(解析漏洞:中间件 先判断服务器中间件)
(4)内容检测
二、文件包含漏洞 1、原理:php文件包含函数(四个)过滤不严:require、require_once、include、include_once。
include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。
2、文件包含漏洞的常见使用方法
1)php包含上传文件

url?page=../../file.txt
2)php包含读文件
  • 将php源码以base64编码的形式读出来
http://192.168.5.79/index.php?url=php://filter/read=convert.base64-encode/resource=flag
3)php包含写文件
要是想利用包含写文件,必须开启PHP的url_allow_include远程URL功能,但是这个功能经过测试在5.3.0的时候已经用不了了,5.4.0直接废除了,因此在PHP 5.3.0一下版本才能实现。
url?page=php://input
post提交我们要执行的代码
4)php包含日志
5)截断包含
当PHP源码对于文件包含做出一定过滤的时候:

可以利用%00截断来绕过过滤
【CTF之文件操作漏洞】6)其他绕过
目录跳转的过滤我们可以构造….//….//xxx.php,方式绕过,由于他只过滤一次,我们可以利用他的过滤动态拼接目录跳转,从而绕过过滤。
三、文件读取漏洞 四、文件删除漏洞

    推荐阅读