当前位置: 首页 > news >正文

行业网站开发互联网广告平台有哪些

行业网站开发,互联网广告平台有哪些,网站优化策划书,产品类网站文件上传白名单绕过(图片马 - 图片二次渲染绕过) 0x01:过关流程 本关的任务是上传一个 “图片马” 到服务器,然后利用文件包含漏洞来 Get Shell(本关要求三种格式的图片均要成功上传才可以,笔者下面演示的…

文件上传白名单绕过(图片马 - 图片二次渲染绕过)

0x01:过关流程

本关的任务是上传一个 “图片马” 到服务器,然后利用文件包含漏洞来 Get Shell(本关要求三种格式的图片均要成功上传才可以,笔者下面演示的仅仅是 GIF 类型的绕过,主要是提供一个思路,对于另外两种格式的绕过,笔者后面会在 “文件上传漏洞” 中单独讲解如何制作一个高级的图片马):
在这里插入图片描述

查看源码,我们发现,本关使用的是白名单校验,且只接收三种图片类型的文件。当服务端收到用户上传的图片后,还会进行二次渲染,即在服务端重新生成一张和用户上传的图片类似的图片(底层还是修改了用户上传的图片,你嵌入其中的图片马很容易就被重写坏了):
在这里插入图片描述
如下,是笔者原本上传的一个 muma.jpg 与其后端渲染后的图片的对比,可以发现,基本上整张图片都被重写了,笔者写入一句话木马的地方也被重构了:
在这里插入图片描述
对于这种面目全非的图片,我们显然不能使用文件包含漏洞 Get Shell。但是,如果你使用的是 GIF 格式的图片马,你就会发现二次渲染后的内容中有很多相似的地方:
在这里插入图片描述
接下来,我们只要往这些相似的部分中找到一个合适的位置写入一句话木马然后上传即可(位置找不好的话,依旧有可能会被二次渲染掉哦,可以从服务器下载上传后的文件,然后查看其二进制信息中是否携带了木马信息):
在这里插入图片描述
找不会被渲染的位置也是一个难活,不同图片的位置都不太一样,而且由于你添加了内容,所以很可能原本不会被渲染的位置依旧被渲染了。不过思路就是上面这样,上传一个图片马,然后下载服务端二次渲染后的图片与原图片对比,看其中是否存在我们写入的一句话木马。

图片马上传成功后,我们还需要一个 “文件包含漏洞” 来执行图片马中的代码(靶场提供了,如果不知道怎么找,可以去看 PASS 14 中的内容):
在这里插入图片描述

如上,可以成功包含图片马,那么下面我们使用 ”中国蚁剑“ 来连接一下木马,看看能否 Get Shell(如下,Get Shell 成功,本关结束):
在这里插入图片描述

0x02:源码分析

下面是本关的 WAF 源码,使用的是白名单的过滤方式。虽然代码很多,但总体逻辑就是,如果你上传的文件属于白名单文件,它就会给你二次渲染一个类似的文件然后放在服务端中:

 $is_upload = false;$msg = null;if (isset($_POST['submit'])){// 获得上传文件的基本信息,文件名,类型,大小,临时文件路径$filename = $_FILES['upload_file']['name'];$filetype = $_FILES['upload_file']['type'];$tmpname = $_FILES['upload_file']['tmp_name'];​$target_path=UPLOAD_PATH.'/'.basename($filename);// 获得上传文件的扩展名$fileext= substr(strrchr($filename,"."),1);//判断文件后缀与类型,合法才进行上传操作if(($fileext == "jpg") && ($filetype=="image/jpeg")){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im = imagecreatefromjpeg($target_path);if($im == false){$msg = "该文件不是jpg格式的图片!";@unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename = strval(rand()).".jpg";//显示二次渲染后的图片(使用用户上传图片生成的新图片)$img_path = UPLOAD_PATH.'/'.$newfilename;imagejpeg($im,$img_path);@unlink($target_path);$is_upload = true;}} else {$msg = "上传出错!";}}else if(($fileext == "png") && ($filetype=="image/png")){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im = imagecreatefrompng($target_path);if($im == false){$msg = "该文件不是png格式的图片!";@unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename = strval(rand()).".png";//显示二次渲染后的图片(使用用户上传图片生成的新图片)$img_path = UPLOAD_PATH.'/'.$newfilename;imagepng($im,$img_path);​@unlink($target_path);$is_upload = true;               }} else {$msg = "上传出错!";}}else if(($fileext == "gif") && ($filetype=="image/gif")){if(move_uploaded_file($tmpname,$target_path)){//使用上传的图片生成新的图片$im = imagecreatefromgif($target_path);if($im == false){$msg = "该文件不是gif格式的图片!";@unlink($target_path);}else{//给新图片指定文件名srand(time());$newfilename = strval(rand()).".gif";//显示二次渲染后的图片(使用用户上传图片生成的新图片)$img_path = UPLOAD_PATH.'/'.$newfilename;imagegif($im,$img_path);​@unlink($target_path);$is_upload = true;}} else {$msg = "上传出错!";}}else{$msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";}}

笔者上面仅仅介绍了 GIF 图片的绕过方式,对于 .png 与 .jpg 其修改方式与 GIF 有很大区别,你还需要了解两种图片的底层格式和规则,所以就不放在这里了。后续还有会更多精彩内容,敬请期待噢。

http://www.dtcms.com/a/589784.html

相关文章:

  • 做网站自己上传电影要多大服务器电商是做什么的?
  • 零基础学JAVA--Day27(注释+异常+异常处理方法)
  • 新华网站建设设计漂亮的网站
  • Linux下的编译器gcc/g++
  • 【Redis|第一篇】基础篇
  • 嵌入式回调:弱函数与函数指针的实战解析
  • 网站建设技术支持包括哪些小工程施工合同协议书
  • 掌握RAG系统的七个优秀GitHub存储库
  • 网站开发面试都会问什么问题网站开发的阶段流程图
  • 如何将废弃笔记本搭建成服务器:使用花生壳内网穿透实现公网访问
  • Linux网络编程:应用层协议HTTP
  • 网站按域名跳转不同的页面网站建设面谈话术
  • Photoshop - Photoshop 工具栏(25)仿制图章工具
  • Java 会话技术、Cookie、JWT令牌、过滤器Filter、拦截器Interceptor
  • 简单理解:ADC(模数转换)采集的滤波算法
  • WASM 3.0 两大领域实战:SvelteKit前端新范式(完整版)
  • WebForms ArrayList 深入解析
  • 免费建站网站建设wordpress4.9.1加速
  • 网络seo营销推广网站开发百灵鸟优化
  • 详解Shell中的if分支(单个条件、多个条件)
  • C++后端总览
  • 快速上手配置Zookeeper
  • Linux1
  • 没有基础怎么学网站建设有没有免费查公司的软件
  • 毕业设计做网站有什么好处wordpress 的论坛模板下载
  • linux spi回环测试
  • 广州机械网站建设wordpress简约
  • Map和HashMap
  • 房地产网站建设方案书网站后台管理页面下载
  • 002-文本、图像和超链接