upload-labs 1-21关通关记录

upload-labs  1-21关通关记录
upload-labs  1-21关通关记录

0x01:

检查源代码,发现JS前端验证,关闭JS即可连接,或者手动添加.php,或者上传1.jpg,再抓包修改为php

0X02:

if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) 
仅存在判断connect-type,抓包修改为image/jpeg,image/png,image/gif,BP抓包,可上传

upload-labs  1-21关通关记录
upload-labs  1-21关通关记录

0X03:

查看源码,尝试用php3,phtml绕过

upload-labs  1-21关通关记录

0X04:

黑名单验证:(包含了所有的黑名单文件)
	$deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".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",".ini");
.htaccess文件,全称为Hypertext(超文本入口),提供了针对目录改编配置的方法,在一个特定的文档中放置一个包含一个或者多个指令的文件,以作用于此目录及其所有子目录。作为用户,所能使用的命令受限制,管理员可以通过Apache的AllowOverride来设置
	0上传.htaccess文件,写入SetHandler application/x-httpd-php,所有文件解析为PHP
然后上传<?php phpinfo(); ?>     可以解析

0x05:

逻辑绕过和第十关一样 加上一个空格 

0x06:

$file_name = strtolower($file_ext) //转换为小写
源码没有大小写,转为为2.PhP,可以上传

0x07:

upload-labs  1-21关通关记录

没有$file_ext = trim($file_ext) 没有首尾去空

0x08:

没有进行.处理,利用windows特性,会自动去除后缀的.,后缀加.进行绕过

0X09:

没有进行::DATA绕过,可在后缀名加::DATA绕过
::DATA会把这之后的数据当成文
 件流处理,且不会检查后缀名,保持之前的::DATA之前的文件名
$file_ext = str_ireplace('::DATA','',file_ext);  上传成功出现403页面,不能正常解析

0x0A:

upload-labs  1-21关通关记录

先进行去除最后的.操作,再进行首位去空操作
修改文件名为info.php. .   经过处理后称为upload_path/info.php.

upload-labs  1-21关通关记录

0X0B:

$fire_name = str_ireplace("deny_")(deny_ext,"",$file_name)     把带有黑名单中的后缀变为空
例子:
	echo str_ireplace("world","shanghai","world world!")
	hello shanghai
上传.pphphp
循环过滤还是递归过滤 

接下来为白名单绕过

0X0C:

00绕过。。。文件系统读到0X00时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0X00,%00上传截断。

因为php的底层基于C语言开发的,c语言的截断就是%00截断

抓包将info.php.jpg后面的一个.换为0x00,在上传时,当系统文件读到0x00时,会认为文件已经结束。从而将info.php.jpg的内容写入到evil.php中,从而达到攻击的目的。

upload-labs  1-21关通关记录

0X0D:

GET型和POST型

upload-labs  1-21关通关记录

0X0E,OXOF:

upload-labs  1-21关通关记录

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。 如果不能访问 filename 指定的图像或者其不是有效的图像,getimagesize() 将返回 FALSE 并产生一条 E_WARNING 级的错误。 

0XA1:

图片马

0XA2:

。。。图片渲染  winhex可改

0XA3:

条件竞争

0XA4:

图片马

0XA5:

空格

0XA6:

数组

注:没有详细说明的靶场会在渗透测试体系化学习笔记会补充

上一篇:Python3-maix CPython 开发文档


下一篇:ueditor编辑器复制粘贴图片上传