CTFSHOW |
您所在的位置:网站首页 › png文件内容 › CTFSHOW |
目录 大体思路 WEB151 WEB152 WEB153 WEB154 web155 web156 web157、158 web159 web160 web161 WEB162 WEB163 WEB164 WEB165 WEB166 WEB167 WEB168 WEB169 WEB170 杂记 大体思路![]() 图片木马原理: 图片木马以文件上传漏洞为基本条件,将可执行的脚本写入到图片中去,再利用文件包含漏洞来执行图片中的一句话木马,从而获取目标服务器权限。 有个很迷的地方: 当你正常上传一个png文件后,开启代理再次上传,会提示上图的错误,群主说是因为js需要重置dom,开启代理并刷新一下再上传就好。 WEB151上传非png文件时会报错,但是bp中没有流量产生,说明为前端过滤 方法:上传test.png(没错,只能是png,gif和jpg都不行)文件,内容为然后bp抓包后修改后缀。访问这个文件RCE即可。 WEB152知识点 什么是 MIME Type? MIME(多用途互联网邮件扩展类型) MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。 一、 首先,我们要了解浏览器是如何处理内容的。在浏览器中显示的内容有 HTML、有 XML、有 GIF、还有 Flash ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME Type,也就是该资源的媒体类型。 媒体类型通常是通过 HTTP 协议,由 Web 服务器告知浏览器的,更准确地说,是通过 Content-Type 来表示的,例如: Content-Type: text/HTML 注意,第二行为一个空行,这是必须的,使用这个空行的目的是将MIME信息与真正的数据内容分隔开。 表示内容是 text/HTML 类型,也就是超文本文件。为什么是“text/HTML”而不是“HTML/text”或者别的什么?MIME Type 不是个人指定的,是经过 ietf 组织协商,以 RFC 的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范 (顺便说一句,Email 附件的类型也是通过 MIME Type 指定的)。 前端过滤加MIME检查 上传png文件,修改后缀,访问文件RCE即可。 WEB153知识点 本题考察.user.ini文件的知识 .htaccess和.user.ini配置文件妙用 官方解释 自 PHP 5.3.0 起,PHP 支持基于每个目录的 INI 文件配置。此类文件 仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。 除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。 在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 和PHP_INI_ALL模式的 INI 设置可被识别。 具体的配置可以看该链接 也就是里面除了PHP_INI_SYSTEM模式的配置以外都可以在.user.ini中进行重写。那么我们就去找我们需要用到配置, 发现 auto_append_file=filename //一个相当于在每个php文件尾加上 include(“filename”) auto_prepend_file=filename //一个相当于文件头加上 include(“filename”)例子: //.user.ini auto_prepend_file=1.png //1.png //1.php(任意php文件)满足这三个文件在同一目录下,则相当于在1.php文件开头里插入了包含语句include('1.png'); 进行了文件包含,因为1.png里面有php代码,所以经过include之后就会代码执行。所以我们就依次上传即可 另外还发现了这么一条 如果题目在php.ini中设置了open_basedir,那么我们就可以上传.user.ini进行修改open_basedir的值,当然条件比较苛刻。大家有兴趣可以研究研究。 想要引发.user.ini解析漏洞需要三个前提条件 服务器脚本语言为PHP 服务器使用CGI/FastCGl模式 上传目录下要有可执行的php文件 分析: 为了利用auto_append_file,我们首先上传一个带木马的图片,接着上传.user.ini内容为 auto_append_file=“xxx” xxx为我们上传的文件名。 这样就在每个php文件上包含了我们的木马文件。 方法: 因为有前端和MIME限制。所以我们先上传图片,然后改为.user.ini即可。 内容为auto_append_file=test.png 然后在上传一个图片木马 test.png。 但是这种方式其实是有个前提的,因为.user.ini只对他同一目录下的文件起作用,也就是说,只有他同目录下有php文件才可以。 从前面我们知道,upload目录下有一个index.php文件,,所以我们的图片木马里面的内容就加入到这个index.php里面了,只要使用这个文件即可触发攻击。 或者可以直接在upload/目录下进行给1赋值(访问/upload/ 默认访问index.php)。 例如这样: 跟上题的步骤一样,只是上传图片木马时上传不上去,经过不断抓包,修改图片木马里面的内容发现是对 2:短标签 5.4 起 就相当于 进行绕过,图片内容 剩下的步骤同153 和154一样 web156在前面的基础上过滤了 []那我们直接用{}来代替 把图片木马内容改为: 即可 web157、158在前面的基础上过滤了{}和分号,那就直接输出flag算了,不搞一句话了。摊牌了,反正知道flag位置 图片木马内容 或者 因为有?>闭合所以可以不用;结尾 web159过滤了括号 web160过滤了括号反引号还有一些关键字,利用日志包含绕过,木马图片内容 因为log被过滤了。所以用拼接绕过 上传完.user.ini和木马图片后 访问网站然后修改ua头信息即可 具体操作: 先上传.user.ini文件 上传木马文件。 这里的木马图片其实是一个中间桥梁的作用,可以在.user.ini中直接包含日志文件。 不过这里不能直接写auto_append_file="/var/lo"."g/nginx/access.lo"."g",会解析错误: 可以写成 auto_append_file=/var/lo""g/nginx/access.lo""g 而可以解析成功。 因为后面是作为PHP文件解析(php字符串拼接的知识),而前面那个是服务器配置文件,语法不同(PHP中可以用.连接字符串这个设定)auto_append_file=/var/lo""g/nginx/access.lo""g可以的原因是环境服务器伪linux,这里是linux字符串拼接的知识。 修改UA,重新访问 然后访问/upload/目录就行了。 web161方法:在160的基础上增加图片头即可,即 GIF89A 知识点: 文件上传漏洞之getimagesize()类型验证 getimagesize(): 会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求,所以可以直接在图片内容开头添加GIF89A。 或者使用图片木马 图片木马的制作 图片木马的制作就是在原来正常的图片用文本打开后,在最后增加php代码即可 第二个方法1就是这样的原理 正常图片结尾 图片木马结尾: 也可以直上传一个正常图片然后抓包在数据最后加上代码就行 这次把.和flag给ban了,使用session文件包含 还是一样先上传.user.ini ,内容为 GIF89A auto_append_file=/tmp/sess_monica这样跳过了中间上传图片木马作为桥梁那部分,在upload/目录下就直接包含了session文件 然后构造一个上传session文件的包 修改cookie,写入内容 访问upload/目录,目录下有index.php文件,即相当于在index.php文件中执行include /tmp/sess_monica 设置payload: 设置线程数 开始竞争即可 成功竞争:
同WEB162 WEB164png图片二次渲染 知识点: 二次渲染 将一个正常显示的图片,上传到服务器。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分,将Webshell代码插在该部分,然后上传。具体实现需要自己编写Python程序,人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的。 Upload-Labs第Pass-16通关(二次渲染绕过) 详解 - 付杰博客 只能上传png图片 ,不仅仅是前端进行了限制,后端也进行了png的检查,所以只修改前端绕过是没有用的。 可以发现文件上传成功后,点击查看图片会跳转到download.php?image=, 这就是这题的前提,跳转之后可能是有include($_GET[image]),所以会代码执行,如果没有,那么访问图片是不能执行代码的 我们先上传一个图片木马: 16进制格式 查看图片发现并没有执行 使用ctrl+s(command+s)将图片下载下来,上传这个图片 发现php代码没有了,猜测是进行了二次渲染。 这里使用大牛的png绕过二次渲染的脚本: */ //imagepng($img,'1.png'); 要修改的图片的路径,1.png是使用的文件,可以不存在 //会在目录下自动创建一个1.png图片 //图片脚本内容:$_GET[0]($_POST[1]); //使用方法:例子:查看图片,get传入0=system;post传入tac flag.php ?> ------------------------------------ 创建1.png图片成功! ------------------------------------脚本保存为 png二次渲染.php ,进入脚本所在目录,执行命令 php png二次渲染.php 1.png //1.png可以换成任何此时1.png内容为: 上传1.png 查看图片并传入命令: 使用ctrl+s(command+s)将图片下载下来,记事本打开即可 这题改成了:jpg二次渲染 脚本: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |