赞
踩
如何区分前端,还是后端
前端尝试抓包
禁止js 先上传非法文件看下可以抓到包不
绕过方法 先上传合法文件 在通过该后缀 本关两种方法第一种禁用js,第二种该后缀
然后用蚁剑进行连接
改成content-type:image/jpeg
如何判断是content-type绕过 先上传正常的jpg看下是否可以显示,抓包分析
黑名单,这些文件类型不让上传
源码
$is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array('.asp','.aspx','.php','.jsp'); $file_name = trim($_FILES['upload_file']['name']); $file_name = deldot($file_name);//删除文件名末尾的点 $file_ext = strrchr($file_name, '.'); $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //收尾去空 if(!in_array($file_ext, $deny_ext)) { $temp_file = $_FILES['upload_file']['tmp_name']; $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext; if (move_uploaded_file($temp_file,$img_path)) { $is_upload = true; } else { $msg = '上传出错!'; } } else { $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!'; } } else { $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!'; } }
改成php5上传
但是蚁剑无法连接,原因服务器没允许,要想可以解析修改配置文件 /opt/lampp/etc/httpd.conf 去带#就可以解析了
还是黑名单限制了更多,唯独没进.htaccess
.htaccess 是配置文件 通常位于网站的根目录或特定的文件中,并影响该目录及子目录。每个目录都可以有这个文件
httpd.conf 是全局的文件,整个服务器的 管理员才可以修改,并且要重启
.htaccess文件可以通过文本编辑器直接进行修改或创建,且修改后会立马生效,不用重启
上传该文件
将 .jpg .txt 文件仍然以php解析
先上传 .htaccess文件 在上传图片马
AddType application/x-httpd-php .jpg .txt
.htaccess
作用:分布式配置文件,一般用于URl 重写,认证 访问控制等
作用范围:特定目录(一般是网站根目录)及其子目录
优先级:较高,可覆盖apache的主要配置文件(httpd-conf)
生效方式:修改后立刻生效
httpd-conf
作用:包含 Apache HTTP 服务器全局行为和默认设置
作用范围:整个服务器
优先级:较低
生效方式:管理员权限,重启服务器后生效
.user.ini
作用:特定于用户或特定目录的配置文件,通常位于web应用程序根目录下。
它作用于覆盖或追加全局配置文件(如 php.ini)中的php配置选项
作用范围:存放该文件的目录以及其子目录
优先级:较高,可以覆盖php.ini
生效方式:立刻生效
php.ini
作用:存储了对整个php环境生效的配置文件,它通常位于php安装目录中,
作用范围:所有运行在该php环境中的php请求
优先级:较低
生效方式:重启php或web服务器
加载方式:会首先加载php.ini/httpd-conf中的配置文件,然后,如果某个目录下存在 .user.ini/.htaccess文件,服务器会在处理请求时检查该目录,并覆盖相应的配置项
.user.ini生效前提
最好大于5.30最好是7.x版本的
ServerAPI为 CGI/FastCGI ----phpinfo()可以查看 serverAPI
serverAPI 类似信息交互的一种协议
.user.ini文件上传漏洞的前提:
.user.ini可以生效并且该上传目录有php文件
写法:
Auto-prepend-file=111.txt (这个文件里面只包含php代码)
A: echo "hello" .php b: echo "word" .txt
Autp-prepend-file=b.txt 内容 为 helloword
点加空格加点
$is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess"); $file_name = trim($_FILES['upload_file']['name']); #获取文件名字 $file_name = deldot($file_name);//删除文件名末尾的点 #1.jpg. 会变成 1.jpg $file_ext = strrchr($file_name, '.'); #通过.分割 获取文件后缀 1 .jpg $file_ext = strtolower($file_ext); //转换为小写 #将后缀转为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //首尾去空 #判断文件后缀在不在黑名单里 if (!in_array($file_ext, $deny_ext)) { $temp_file = $_FILES['upload_file']['tmp_name']; $img_path = UPLOAD_PATH.'/'.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload = true; } else { $msg = '上传出错!'; } } else { $msg = '此文件类型不允许上传!'; } } else { $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!'; } }
windows 文件后缀 . 空格 在文件最后都会被自动删除
源码只过滤一遍
1.php. .
根据代码来看,文件名字变化过程
1.php.空格
1.php.
不在后缀中,然后上传到服务器里,最后在文件中自动删除变成1.php
第三关用这种方法不行
因为第三关名字是随机取的上传文件之后和 上传的文件后缀组合成新的文件名
文件后缀 Txt TXT 都会在windows中变成txt最后
怎么分析的,与前面几关都类似,看源码没有去除. 所以可以用加.来绕过
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。