02_文件上传

文件上传:

一、前端js校验

使用burpsuite抓包修改,先传一个jpg文件,抓包的时候修改为php文件

二、服务器校验

1. content-type校验 使用burp suite 修改请求包的type字段
2. 文件后缀之黑名单绕过:
(1)多后缀 .php3 .php4 .php5  .phtml
(2)大小写混淆绕过
(3)windows . 空格
(4)windows ::$DATA
(5).htaccess文件绕过  
(6)双写文件后缀绕过
(7)解析漏洞:
	1. apache 从右往左 形如aaa.bbb.ccc 先尝试解析ccc 不行则bbb
	2. iis	
		6.0  
			文件夹以.asp .asa .cer .cdx 作为结尾 此时该文件夹下的文件优先当作asp处理
			文件名中包含.asp; .asa; .cer; .cdx; 此时该文件无论后缀 优先当作asp处理
		7.0-7.5  
			xxx.xxx/xxx.php
			比如存在一个a.jpg文件,里面内容<?php phpinfo();?>
			直接访问这个a.jpg文件是一张图片,并不能解析php代码
			当IIS服务器遇到文件路径/a.jpg/bbb.php时,若/a.jpg/bbb.php不存在,则会去掉最后的/bbb.php,然后判断/a.jpg是否存在,该目录下/a.jpg存在,由于服务器配置不当,造成了服务器把a.jpg当做 了php脚本执行了。 
	3. nginx
		特定版本的nginx(视频中5.2.17)  xxx.xxx/xxx.php 
		低版本下 %00.php
3. 文件后缀之白名单绕过:
(1) %00截断( php版本 < 5.3.4  并且  php.ini中 magic_quotes_gpc = Off )
(2) 联合include 文件包含(图片马)
(3) 二次渲染
(4) 条件竞争
(5) save_name数组绕过

三、upload-labs 1-21关

第一关:   前端js校验  使用burpsuite抓包修改php文件的后缀名为jpg
第二关:   content-type校验 使用burp suite 修改请求包的type字段为  image/jpeg
第三关:   双写 ::$DATA 绕过 (感觉可以php3绕过)
第四关:   wamp软件下,可以使用.htaccess 绕过	或者	.空格. 绕过
第五关:   .空格. 绕过
第六关:   文件后缀大小写混淆绕过	或者	双写 ::$DATA 绕过                 
第七关:   空格绕过	或者	双写 ::$DATA 绕过                             
第八关:   .空格 绕过
第九关:   ::$DATA 绕过	
第十关:   .空格. 绕过
第十一关:  双写php绕过
第十二关:  %00截断(GET方式接收svae_path) 绕过  
		重点:save_path=../upload/2022_11_3.php
		(php后面本来多加了个字符,然后通过十六进制改为00,所以看不见了)

		POST /Pass-12/index.php?save_path=%2e%2e%2f%75%70%6c%6f%61%64%2f%32%30%32%32%5f%31%31%5f%33%2e%70%68%70%00 HTTP/1.1
		.....
		
第十三关:  %00截断(post方式接收save_path) 绕过 
		POST /Pass-13/index.php HTTP/1.1
		......
		------WebKitFormBoundaryLiu6QH63sOOD5SgE
		Content-Disposition: form-data; name="save_path"

		重点:../upload/2022_11_3.php  (同样后面有看不见的字符,十六进制改为00了,然后post请求体不能用url编码后的代码)
		
第十四关:  普通的图片马绕过(再加上文件包含漏洞)
		制作简单的图片马
			copy /b ok.jpg+1.txt= ok_new.jpg
		http://www.upload.com/include.php?file=./upload/8620221103202108.png 

第十五关: 普通的图片马绕过(再加上文件包含漏洞)
第十六关: 需要开启 php.ini的php_exif模块 
第十七关: 图片马,二次渲染绕过  
		(本关因为会从图片中生成新的图片,然后删除原来上传的图片,并且普通的图片马,从新生成之后,里面的php代码被删除了,所以要二次渲染) 
		制作gif图片马,以十六进制的方式写入php代码,不破坏图片原本结构

第十八关: 条件竞争绕过
		上传一个利用file_put_contents()函数写入文件的php文件
		因为源码是先移动到指定目录,在判断类型是不是jpg,png,gif文件,如果是就重命名,如果不是就删除

		所以我们可以利用burpsuite的intruder模块 
			一边不断的去上传文件
			另外一边不断去访问上传的文件
			利用服务器处理不过来的间隙,执行了文件代码,永久的生产了一个新的文件

第十九关: 普通的图片马绕过,需要文件包含(网上还有说需要条件竞争,保持原图片名的,但我感觉不需要)
第二十关: .空格.绕过	或者	00截断
第二十一关: save_name数组绕过
			1. 类型改为 image/jpeg
			2. save_name 变为数组
			3. save_name[0] 是test.php
			   save_name[2] 是jpg
			   save_name[1] 让它不存在

			------WebKitFormBoundarySTsD2JKbxy7BAPQw
			Content-Disposition: form-data; name="upload_file"; filename="test.php"
			Content-Type: image/jpeg

			<?php phpinfo();?>
			------WebKitFormBoundarySTsD2JKbxy7BAPQw
			Content-Disposition: form-data; name="save_name[0]"

			test.php
			------WebKitFormBoundarySTsD2JKbxy7BAPQw
			Content-Disposition: form-data; name="save_name[2]"

			jpg
			------WebKitFormBoundarySTsD2JKbxy7BAPQw
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值