共享虚拟主机做网站够用么,阿里云域名注册登录,京东网页版电脑版,vue登录页面模板一#xff0c;工具资源下载
百度网盘资源下载链接地址#xff1a;
百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固#xff0c;支持教育网加速#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan…
一工具资源下载
百度网盘资源下载链接地址
百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固支持教育网加速支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1IHTnqsiUBd4DWmEKoXOcrA?pwd8888提取码8888
二靶场安装及 1-5关
【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧源码分析-CSDN博客文章浏览阅读195次。【网络安全 --- 文件上传靶场练习】文件上传靶场安装以及1-5关闯关思路及技巧源码分析https://blog.csdn.net/m0_67844671/article/details/134102042?spm1001.2014.3001.5502
三6-15关
3-6 第六关
空格和点配合绕过
先看一下源代码里面的代码将上传的文件名都改为小写了那么上面的方法就不行了。 利用Windows系统的文件名特性。文件名最后增加空格和点写成1.php .这个需要用burpsuite抓包修改上传后保存在Windows系统上的文件名最后的一个.会被去掉实际上保存的文件名就是1.php 改完以后放行然后关闭拦截 回来查看发现已经上传成功了 这一关主要用的是windows文件命名的特性
3-7 第七关
原理同Pass-06文件名后加点和空格改成 1.php. 这个我们就不演示了
3-8 第八关
基于文件流特性::$DATA来绕过windows下的ntfs文件流特性来玩的。
先查看源码分析代码少了 $file_ext str_ireplace(‘::$DATA‘, ‘‘, $file_ext);//去除字符串::$DATA 这一句我们可以采用Windows文件流特性绕过文件名改为1.php::$DATA , 上传成功后保存的文件名其实是1.php 正常上传的话不让上传php木马文件我们上传时抓包 在文件名tu.php后面加上::$DATA 成功绕过去了 3-9 第九关
点空格点绕过
先看源码 原理同Pass-06上传文件名后加上点空格点改为 1.php. . 这里我就不演示了 1.php. . 先通过trim函数去左右空格然后删除文件名末尾的点就剩1.php. 了strchr函数是从一个字符串中查找指定的字符并返回从这个字符到结尾的内容所以得到的是.php. ;然后转换小写去除文件流没影响最后首位去空剩下.php. ;最后保存的时候Windows自动会把末尾的点也会去掉就这样成功绕过去了 3-10 第十关
双写绕过
先看源代码
看到str_ireplace,这是一个替换用的函数第一个参数为替换的内容这里指定是是deny_ext数组第二个参数为,第三个参数为文件名意思就是文件名里包含数组里的后缀的话直接替换为 这个很好绕过比如说我们传一个tu.php;发现php在数组里面就会替换成最后就剩下一个tu了我们的做法是双写上传一个tu.pphphp文件这样的话发现确实存在php,就会进行替换替换以后就剩下tu.php了就绕过去了 我把服务端文件存储的文件夹清空了上传以后我们看一看效果 选择我们改过后缀的文件 发现上传成功嘞了 如我们所料成功上传了 3-11 第十一关
%00截断这个属于白名单绕过这是php语言自身的问题php低版本存在的漏洞
$is_upload false;
$msg null;
if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file]
[name],strrpos($_FILES[upload_file][name],.)1);if(in_array($file_ext,$ext_arr)){$temp_file $_FILES[upload_file][tmp_name];$img_path $_GET[save_path]./.rand(10,99).date(YmdHis)...$file_ext;if(move_uploaded_file($temp_file,$img_path)){$is_upload true;} else {$msg 上传出错;}} else{$msg 只允许上传.jpg|.png|.gif类型文件;}
} 分析代码这是以时间戳的方式对上传文件进行命名使用上传路径名%00截断绕过不过这需要对文件有足够的权限比如说创建文件夹上传的文件名写成1.jpg, save_path改成../upload/1.php%00 (1.php%00.jpg经过url转码后会变为1.php\000.jpg)最后保存下来的文件就是1.php 选择一个webshell文件然后抓包 抓包如下 按如下图进行修改然后放包关闭抓包 我的一直提示上传错误原理是没问题的你们自己试一下我回去好好研究研究 3-12 第十二关
0x00绕过
$is_upload false;
$msg null;
if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_ext substr($_FILES[upload_file]
[name],strrpos($_FILES[upload_file][name],.)1);if(in_array($file_ext,$ext_arr)){$temp_file $_FILES[upload_file][tmp_name];$img_path $_POST[save_path]./.rand(10,
99).date(YmdHis)...$file_ext;if(move_uploaded_file($temp_file,$img_path)){$is_upload true;} else {$msg 上传失败;}} else {$msg 只允许上传.jpg|.png|.gif类型文件;}
} 原理同Pass-11上传路径0x00绕过。利用Burpsuite的Hex功能将save_path改成../upload/1.php【二进制00】形式
跟十一关不同的地方在于第十一关的上传路径在URL上我们可以通过%00也就是0URL编码以后就是%00来截断现在文件上传路径在数据中所以需要0x00十六进制形式截断
我们上传一个webshell.jpg图片然后抓包 发现上传路径在数据部分里 我们可以这样做后面接上aini.php (注意有个空格为了方便改数据的时候定位 点击上面的Hex让数据以十六进制形式显示 往下翻找到我们路径的位置我们在aini.php后面加了空格空格转换为十六进制就是20所以很好定位左边红色框里的20就是我们自己故意留下的空格 然后就是把20改为00也就是十六进制的00了跟第十一关%00截断原理一模一样 切换回来以后其实aini.php后面看不出来有变化但是确实已经加上了截断 不过还是跟第十一关一样的文件上传失败的错误暂时没找出原因不过原理就是这个你们自己试一下看看 3-13 第十三关
绕过文件头检查
function getReailFileType($filename){$file fopen($filename, rb);$bin fread($file, 2); //只读2字节fclose($file);$strInfo unpack(C2chars, $bin); $typeCode intval($strInfo[chars1].$strInfo[chars2]); $fileType ; switch($typeCode){ case 255216: $fileType jpg;break;case 13780: $fileType png;break; case 7173: $fileType gif;break;default: $fileType unknown;} return $fileType;
}
$is_upload false;
$msg null;
if(isset($_POST[submit])){$temp_file $_FILES[upload_file][tmp_name];$file_type getReailFileType($temp_file);if($file_type unknown){$msg 文件未知上传失败;}else{$img_path UPLOAD_PATH./.rand(10, 99).date(YmdHis)...$file_type;if(move_uploaded_file($temp_file,$img_path)){$is_upload true;} else {$msg 上传出错;}}
}
以上是检查文件头的函数
绕过文件头检查添加GIF图片的文件头GIF89a绕过GIF图片检查。
或者我们使用命令copy 1.jpg /b shell.php /a webshell.jpg将php一句话追加到jpg图片末尾代码不全的话人工补充完整。形成一个包含Webshell代码的新jpg图片然后直接上传即可。但是我们没有办法拿到shell应为我们上传的图片马无法被解析成php形式通常图片马配合%00或者0x00截断上传或者配合解析漏洞
我在下面这篇博客里讲了绕过文件头检查的三种方式可以去这篇博客里参考
【网络安全 --- 任意文件上传漏洞2】带你了解学习任意文件上传漏洞-CSDN博客文章浏览阅读45次。【网络安全 --- 任意文件上传漏洞2】带你了解学习任意文件上传漏洞。讲述了任意文件上传漏洞以及几种绕过方法https://blog.csdn.net/m0_67844671/article/details/134036922?spm1001.2014.3001.5502
3-14 第十四关
function isImage($filename){$types .jpeg|.png|.gif;if(file_exists($filename)){$info getimagesize($filename);$ext image_type_to_extension($info[2]);if(stripos($types,$ext)0){return $ext;}else{return false;}}else{return false;}
}
$is_upload false;
$msg null;
if(isset($_POST[submit])){$temp_file $_FILES[upload_file][tmp_name];$res isImage($temp_file);if(!$res){$msg 文件未知上传失败;}else{$img_path UPLOAD_PATH./.rand(10, 99).date(YmdHis).$res;if(move_uploaded_file($temp_file,$img_path)){$is_upload true;} else {$msg 上传出错;}}
} 原理跟 代码注入绕过--getimagesize() 一样,参考以下博客
【网络安全 --- 任意文件上传漏洞2】带你了解学习任意文件上传漏洞-CSDN博客文章浏览阅读47次。【网络安全 --- 任意文件上传漏洞2】带你了解学习任意文件上传漏洞。讲述了任意文件上传漏洞以及几种绕过方法https://blog.csdn.net/m0_67844671/article/details/134036922?spm1001.2014.3001.5502 getimagesize() 函数用于获取图像尺寸 索引 2 给出的是图像的类型返回的是数字其中1 GIF2 JPG3 PNG4 SWF5 PSD6 BMP7 TIFF(intel byte order)8 TIFF(motorola byte order)9 JPC10 JP211 JPX12 JB213 SWC14 IFF15 WBMP16 XBM这里有详解 PHP 获取图像信息 getimagesize 函数-CSDN博客文章浏览阅读2.9w次。getimagesize() 函数用于获取图像尺寸类型等信息。imagesx() 函数用于获取图像的宽度。imagesy() 函数用于获取图像的高度。getimagesize() 函数用于获取图像大小及相关信息成功返回一个数组失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。语法array getimagesize( string fhttps://blog.csdn.net/sanbingyutuoniao123/article/details/52166617
image_type_to_extension() 函数用于获取图片后缀 3-15 第十五关
exif_imagetype()绕过
跟第十三第十四关差不多
function isImage($filename){//需要开启php_exif模块$image_type exif_imagetype($filename);switch ($image_type) {case IMAGETYPE_GIF:return gif;break;case IMAGETYPE_JPEG:return jpg;break;case IMAGETYPE_PNG:return png;break; default:return false;break;}
}
$is_upload false;
$msg null;
if(isset($_POST[submit])){$temp_file $_FILES[upload_file][tmp_name];$res isImage($temp_file);if(!$res){$msg 文件未知上传失败;}else{$img_path UPLOAD_PATH./.rand(10, 99).date(YmdHis)...$res;if(move_uploaded_file($temp_file,$img_path)){$is_upload true;} else {$msg 上传出错;}}
}
其中exif_imagetype() 此函数是php内置函数用来获取图片类型