upload 通关纪实
安全界 的彭于晏
一个很帅的 安全工程师
展开
-
uplload 通关纪实 pass21
$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{原创 2021-07-02 08:01:53 · 230 阅读 · 0 评论 -
uplload 通关纪实 pass20
$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","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asa原创 2021-07-01 15:13:05 · 125 阅读 · 1 评论 -
uplload 通关纪实 pass19
//index.php$is_upload = false;$msg = null;if (isset($_POST['submit'])){ require_once("./myupload.php"); $imgFileName =time(); $u = new MyUpload($_FILES['upload_file']['name'], $_FILES['upload_file']['tmp_name'], $_FILES['upload_file']['size原创 2021-07-01 15:10:56 · 147 阅读 · 0 评论 -
uplload 通关纪实 pass18
源代码如下:$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($原创 2021-07-01 15:09:10 · 131 阅读 · 0 评论 -
uplload 通关纪实 pass17
$is_upload = false;$msg = null;if (isset($_POST['submit'])){ // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径 $filename = $_FILES['upload_file']['name']; $filetype = $_FILES['upload_file']['type']; $tmpname = $_FILES['upload_file']['tmp_name']; $targ原创 2021-07-01 15:05:39 · 87 阅读 · 0 评论 -
uplload 通关纪实 pass16
exif_imagetype(string $filename)//读取一个图像的第一个字节并检查其签名因此此函数需要开启php_exif模板,php_exif在phpstudy主界面–其他选项菜单–PHP扩展及设置–PHP扩展里面。此外还需要在php.ini(在phpstudy主界面的其他选项菜单–打开配置文件里面)里修改,将;extension=php_exif.dll前面的;去掉,然后保存重启。接着操作跟Pass-14和Pass-15的操作一样。源代码如下:function isImag原创 2021-07-01 15:03:38 · 92 阅读 · 0 评论 -
uplload 通关纪实 pass15
根据源代码,我们可以知道这是通过使用getimagesize()来检查是否为图片文件上传图片马进行绕过。同Pass-14。首先上传一个gif文件,然后用burp抓包:之后发送到repeater模块,点击Go,成功上传:接着我们访问如下图所示的网址,成功访问到页面:用菜刀连接:成功访问到:...原创 2021-07-01 15:01:33 · 141 阅读 · 0 评论 -
uplload 通关纪实 pass14
这一关会读取判断上传文件的前两个字节,判断上传文件类型,并且后端会根据判断得到的文件类型重命名上传文件。使用 图片码 + 文件包含 绕过。源代码如下:function getReailFileType($filename){ $file = fopen($filename, "rb"); $bin = fread($file, 2); //只读2字节 fclose($file); $strInfo = @unpack("C2chars", $bin);原创 2021-07-01 14:59:36 · 136 阅读 · 0 评论 -
uplload 通关纪实 pass13
与Pass-12的区别是这里使用POST传地址,POST不会对里面的数据自动解码,需要在Hex中修改。直接在 hex 的值中修改,形成 0x00 截断进行绕过即可。源代码如下:$is_upload = false;$msg = null;if(isset($_POST['submit'])){ $ext_arr = array('jpg','png','gif'); $file_ext = substr($_FILES['upload_file']['name'],strrpos($原创 2021-07-01 14:57:32 · 130 阅读 · 0 评论 -
uplload 通关纪实 pass12
%00截断的条件是要满足以下几点:php 版本小于 5.3.4;php的magic_quotes_gpc为OFF状态(magic_quotes_gpc在phpstudy主界面–其他选项菜单–PHP扩展及设置–参数开关设置里,然后改为off状态后记得重启一下phpstudy服务)。查看源码和提示,上传路径可控,并且是最终文件的存放位置是以拼接的方式,可以使用%00截断,但需要php版本<5.3.4,并且magic_quotes_gpc关闭。原理是:php的一些函数的底层是C语言,而move_upl原创 2021-07-01 14:53:23 · 159 阅读 · 0 评论 -
uplload 通关纪实 pass11
查看源码后,发现其对存在黑名单中的字符进行替换,但str_ireplace()函数只替换一次,因此修改文件名为1.pphphp后可以成功绕过。首先上传一个php文件,并用burpsuite抓包:然后发送到repeater模块,修改11.php为11.pphphp,点击Go,之后成功上传,如下图所示:连接菜刀:成功访问到目标文件:...原创 2021-07-01 14:51:27 · 87 阅读 · 0 评论 -
uplload 通关纪实 pass10
这一关是将文件名进行过滤操作后,将文件名拼接在路径后面,所以需要绕过前面的首尾去空以及去点。这一关黑名单,最后上传路径直接使用文件名进行拼接,而且只对文件名进行filename=deldot(file_name = deldot(filename=deldot(file_name)操作去除文件名末尾的点,构造后缀绕过黑名单.源代码如下:$is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_exists原创 2021-07-01 14:49:33 · 92 阅读 · 0 评论 -
uplload 通关纪实 pass9
特殊符号绕过原理:Windows系统下,如果上传的文件名中test.php::DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。去除了对字符串::DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。去除了对字符串::DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。去除了对字符串::DATA的过滤,选择选择后缀为.php的一句话上传,抓包后在后面增加::$DATA,上传成功。源代原创 2021-07-01 14:46:51 · 108 阅读 · 0 评论 -
uplload 通关纪实 pass8
这一关黑名单,没有使用deldot()过滤文件名末尾的点,可以使用文件名后加.进行绕过。并且Windows系统下,文件后缀名最后一个点会被自动去除。源代码如下:$is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html","原创 2021-07-01 14:44:22 · 80 阅读 · 0 评论 -
uplload 通关纪实 pass7
Windows系统下,对于文件名中空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。针对这样的情况需要使用Burpsuite阶段HTTP请求之后,修改对应的文件名 添加空格。源代码如下:$is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array(".php",".php5",".php4",原创 2021-07-01 14:41:48 · 89 阅读 · 0 评论 -
uplload 通关纪实 pass6
这一关将htaccess也ban了。大小写绕过原理:Windows系统下,对于文件名中的大小写不敏感。例如:test.php和TeSt.PHP是一样的。Linux系统下,对于文件名中的大小写敏感。例如:test.php和 TesT.php就是不一样的。去除对文件后缀名的转为小写设定,可以直接选择后缀名为.PHp等非黑名单中存在的格式上传。同样也可以抓包到repeater模块修改文件后缀名为.PHp等等非黑名单中存在的格式上传。源代码如下:$is_upload = false;$msg = n原创 2021-07-01 14:39:22 · 101 阅读 · 0 评论 -
uplload 通关纪实 pass5
php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。但是想要引发 .user.ini 解析漏洞需要三个前提条件:服务器脚本语言为PHP;服务器使用CGI/FastCGI模式;上传目录下要有可执行的php文件。源代码如下:$is_upload = false;$msg = null;if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH))原创 2021-07-01 14:36:23 · 102 阅读 · 0 评论 -
uplload 通关纪实 pass4
(1)配置文件httpd.conf需要:1.开启mod_rewrite模块(mod_rewrite模块可以操作URL的所有部分(包括路径信息部分), 在服务器级的(httpd.conf)和目录级的(.htaccess)配置都有效, 还可以生成最终请求串。)。2.AllowOverride All(所有具有 .htaccess 作用域的指令都允许出现在 .htaccess 文件中)。(2)上传.htaccess(.htaccess文件可以的事情,主要包括:文件夹密码保护、用户自定义重定向、自定义404页面原创 2021-07-01 14:31:09 · 127 阅读 · 0 评论 -
uplload 通关纪实 pass3
上传黑名单内没有被过滤掉的文件后缀名。查看源码,发现是黑名单检测,只要上传php其他相关的文件后缀名文件即可,例如:.phtml,.phps,.php3,.php5,.pht等等。先修改一下httpd.conf文件,在里面加上一行:AddType application/x-httpd-php .php3 .php4 .phtml .phps .php5 .pht:修改完保存文件之后记得重启一下phpstudy,这样文件才会生效。先上传一个3.php文件,用burpsuite抓一下包:之后修原创 2021-07-01 11:34:34 · 134 阅读 · 0 评论 -
uplload 通关纪实 pass1
源代码:两种方法:使用NoScript插件禁用js。抓包改文件后缀名。上传1.php文件,发现无法上传此类型的文件。查看源码:发现是前端js校验。(1)可以通过NoScript插件禁用js来绕过:创建1.php:上传1.php:上传成功。检查元素,查看到图片的保存路径:用菜刀连接,成功访问到目录:(2)使用burpsuite抓包改包,修改文件后缀名jpg为php。先上传一个图片马,使用burpsuite抓包:接着把1.jpg改成1.php,如下图所示:然后原创 2021-07-01 09:48:45 · 137 阅读 · 0 评论 -
uplload 通关纪实 pass2
1、抓包改content-type类型。2、抓包改文件后缀名。源代码:之后修改content-type类型为image/jpeg、image/png、image/gif的其中一个,如下图所示:放包之后查看:查看一下图片所在的目录:之后用菜刀连接:成功访问到目录:(2)使用burpsuite抓包改包,修改文件后缀名jpg为php。先设置下代理:接着开启burpsuite:接着再制作一个图片马,如下图所示:上传a.jpg,成功抓到包如下图所示:接着在burpsu原创 2021-07-01 10:02:58 · 112 阅读 · 0 评论