文件上传

通过前面的爆破和这次上传就发现,后端校验比前端校验更安全,更可靠,一切在前端做的安全措施都是不靠谱的,仅起到辅助作用,但是前端校验可以增加用户体验。也就是一句话“前端校验防君子,后端校验防小人”😀

点击去另外爆破篇

client check

  • 首先上传,弹出只能上传图片,查看一下源码
  • 查看源码,上传位置有HTML onchange该元素 “在元素值改变时触发”
描述
scriptonchange发生时运行的脚本
  • 将“checkFileExt(this.value)“属性删除,再次上传php就成功了

MIME type

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 MIME

 点击可前往具体介绍
  • 尝试上传kk.php,毫无意外传不上去

在HTTP中,MIME类型被定义在Content-Type header中。

  • 例如,假设你要传送一个Microsoft Excel文件到客户端。那么这时的MIME类型就是“excel”。在大多数实际情况中,这个文件然后将传送给Excel来处理(假设我们设定Excel为处理特殊MIME类型的应用程序)。在ASP中,设定MIME类型的方法是通过Response对象的ContentType属性。
  • 使用burp修改content-type为图片类型,然后发送,通过HTTP头的修改,绕过了MIME type验证,上传成功,并使用kkk.php一句话控制。

Getimagesize

可参考  PHP getimagesize 函数 – 获取图像信息

  • getimagesize():它是php提供的,判断目标文件是否为图片
  • 通过该文件的前面几个字符串,来判断文件类型。
  • getmagesize()返回结果中有文件大小和文件类型。
  • 思路:getimagesize()返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否为图片的话,会存在问题
  • 因此可以通过伪造十六进制的头部字符串来绕过getimagesize()函数,从而达到上传的效果。
  • 十六进制的头部的前面的几个字符串基本上是一样的,操作如下图,将png图片ikun1.png  copy 一下,生成ikun.png 进行伪造,在图片16进制末尾插入想要的代码。
  • 上传显示成功
  • 包含了恶意代码的图片即使绕过了Getimagesize,但图片里的php代码,并未执行因此要结合本地包含文件漏洞使用。有时间在做吧。
文章作者:摘星怪
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章地址及作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇