文件上传 [SUCTF 2019]CheckIn1

打开题目

我们用cmd

curl --head +url 查看网站使用的是什么服务器

此题用的是openresty,OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台

我们上传php,phtml的一句话木马都显示不合法

那我们试试传a.jpg的一句话木马

显示我们一句话木马内容里面包含了<?

我们上传2.jpg

那用其他姿势再看看

上传1234.png

可以制作成图片马,但是需要解析成php文件

正常想到的是.htaccess,但是这个服务器是nginx,而.htaccess是针对apache的

 

我们先打开user.ini文件,auto_prepend_file=1234.png,意思在执行php第一个代码前先执行包含的文件。即1234.png

注意:我们需要在ini文件开头上写上GIF89a作为文件幻术头,才能上传成功

访问一下

发现上传成功,接下来 我们用蚁剑连接下面的这个目录

uploads/cc551ab005b2e60fbdc88de809b2c4b1/index.php
原因:.user.ini中auto_prepend_file函数会在执行前把我们的一句话木马文件包含进来,并解析为php格式,而且这个函数是在执行加载第一个PHP代码之前执行指示(包含的)PHP文件

蚁剑连接,在根目录下找到了flag

 

即使我们这里把ini文件里面的函数改成apppend_file函数

上传目录依旧是

url+     /uploads/c55e0cb61f7eb238df09ae30a206e5ee/index.php

知识点:

  • ./htaccess文件和user.ini文件有何区别?

.htaccess(“分布式配置文件”)是一种Apache服务器配置文件,只能在支持Apache服务器的环境中使用,例如在Linux和Windows系统中安装了Apache服务器。 .htaccess文件应该被用在内容提供者需要针对特定目录改变服务器的配置而又没有root权限的情况下

php.ini(“全局配置文件”),对整个web服务起作用。user.ini是用户自定义的php.ini,通常构造后门和隐藏后门。虽然.user.ini也有限制条件,但是相比.htaccess的用于更加广泛,不仅适用于Apache,还可以在Nginx上操作。不管是nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法

auto_prepend_file 表示加载第一个PHP代码之前执行指示(包含的)PHP文件
auto_append_file 表示加载第一个PHP代码之后执行指示(包含的)PHP文件

.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置

auto_prepend_file是在文件前插入,而auto_append_file是在文件最后才插入。 

  • 如何查看网站所使用的服务器是什么?

我们可以用cmd,curl --head 域名/IP(如果对方做了版本隐藏可能会看不到是什么服务器)

以上面的题目为例

可以看出网站使用的是 openresty服务器,而OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台

或者使用站长之家查询,网页404报错等等(不适用于此题)

  • 如何生成图片马?

图片马——就是在图片中隐藏一句话木马,和以jpg等为文件后缀的一句话木马不同,前者的本质是图片,后者的本质其实还是文档

图片马就是把一句话木马,通过二进制的方式追加到图片文件末尾,将木马文件和图片合并为另一个图片文件,合并后的图片包含一句话木马而且不影响图片显示,但用记事本等文本编辑器打开,能看到图片末尾的恶意代码。然后将图片上传到网站中,利用网站的漏洞,通常是文件包含漏洞,让网站把上传的图片当成脚本代码解析,从而达到运行恶意代码控制网站服务器的目的。
简单来说就是以文件上传漏洞为基本条件,将可执行的条件写入图片中去,再利用文件包含漏洞来执行图片中存在的一句话木马,从而获取目标服务器的权限。
 

制作方法:

1.将图片用文本方式打开,在末尾粘贴一句话木马(记事本,notepad++等,可能修改后图片无法正常显示)

2.cmd中使用命令 copy 1.jpg/b + 2.php 3.jpg

/b是二进制形式打开,/a是ascii方式打开

实操:桌面上有1.png图片,还有2.php一句话木马文件,在cmd终端下打开,注意三者须在一个目录下

   copy 1.png/b + 2.php/a 5.jpg

  用记事本打开5.jpg,在乱码的末尾发现了我们加上去的一句话木马(图片是能正常显示的)

copy  2.php/a +1.png/b 6.jpg

接下来

   我们依旧用记事本打开6.jpg,在乱码开头便发现了一句话木马(图片无法正常显示)

我们总结知道,两个代码都可以执行得到相同的结果,只是后者的结果,一句话木马在文件内容的首行,不推荐用后者

3.16进制打开图片在末尾添加一句话木马(如010editor)

4.用ps打开图片,在文件简介里面写上一句话木马

知识点见:https://www.cnblogs.com/1ink/p/15101706.html

exif_imagetype()函数

exif_imagetype() 读取一个图像的第一个字节并检查其签名,可以使用exif_imagetype()来避免调用其他具有不受支持的文件类型的exif函数

图像类型常量

如果无法从文件中读取足够的字节来确定图像类型,exif_imagetype() 将发出 E_NOTICE 并返回 false。 

文章参考wp:[SUCTF 2019]CheckIn 1_succ3的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/170904.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetCode 25.K 个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。k 是一个正整数&#xff0c;它的值小于 或 等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值&a…

asp.net core自定义异常过滤器并记录到Log4Net日志

1.创建异常过滤器特性 using Log4Net.Controllers; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;namespace Log4NetTest {public class CustomerExceptionFilterAttribute : Attribute, IExceptionFilter{private readonly ILogger<CustomerE…

Mysql 和 Redis 数据如何保持一致

先阐明一下Mysql和Redis的关系&#xff1a;Mysql是数据库&#xff0c;用来持久化数据&#xff0c;一定程度上保证数据的可靠性&#xff1b;Redis是用来当缓存&#xff0c;用来提升数据访问的性能。 关于如何保证Mysql和Redis中的数据一致&#xff08;即缓存一致性问题&#xf…

Apache DolphinScheduler如何完全设置东八区?

默认情况 为了兼容全世界不同时区&#xff0c;Apache DolphinScheduler 使用的是 UTC 0 时区&#xff0c;包括保存到数据库表中的数据时区&#xff0c;以及展示到页面上的时区。 如果我们想在页面上看到东八区时间&#xff0c;则需要在页面上手动选择上海时区&#xff0c;如下…

威海广泰-002111 三季报分析(20231109)

威海广泰-002111 基本情况 公司名称&#xff1a;威海广泰空港设备股份有限公司 A股简称&#xff1a;威海广泰 成立日期&#xff1a;2002-08-30 上市日期&#xff1a;2007-01-26 所属行业&#xff1a;专用设备制造业 周期性&#xff1a;0 主营业务&#xff1a;航空产业、消防产业…

POWER APPS:必填项功能

Power apps的Forms组件中&#xff0c;它的卡片有个属性为Required。作用为提醒此项为必填&#xff0c;且在submitform时检查此项是否有值&#xff0c;没有值就无法正常提交&#xff0c;且会有提示。 另外可对提交按钮的属性displaymode做一次判断&#xff0c;只允许按钮在窗体中…

2023nacos源码解读第2集——nacos-server的启动

nacos 是一个典型的server-client中间件&#xff0c;server这里安装最新的nacos-server 2.3.0-BETA版本 1.docker启动nacos-server 镜像详情参考nacos-docker项目的readme &#xff0c;很方便&#xff0c;但是官方提供的nacos-server镜像往往可能滞后&#xff0c;且不便于后续…

安卓RadioButton设置图片大小

RadioButton都不陌生&#xff0c;一般我们都会设置图片在里面&#xff0c;这就涉及一个问题&#xff0c;图片的大小。如果图片过大&#xff0c;效果很不理想。搜了很多方法&#xff0c;都不理想。无奈只能自己研究了 代码如下&#xff1a; 1&#xff0c;一个简单的 RadioButt…

华为ensp:静态默认路由

静态路由 到r2 上的系统视图模式 下一跳为1.1.1.2 ip route-static 192.168.2.0 255.255.255.0 1.1.1.2 如果找2网段下一跳为1.1.1.2接口 默认路由 到r3上做的是默认路由 ip route-static 0.0.0.0 0 1.1.1.1 所有的流量去找1.1.1.1 查看效果 只要做完完整的路由就可…

Linux_磁盘管理_df命令

1、df命令是用来干什么的 df的全称是disk free&#xff0c;意为“磁盘空间”。 使用df命令可以查看系统中磁盘的占用情况&#xff0c;有哪些文件系统&#xff0c;在什么位置&#xff08;挂载点&#xff09;&#xff0c;总空间&#xff0c;已使用空间&#xff0c;剩余空间等。…

生活污水处理一体化处理设备有哪些

生活污水处理一体化处理设备有多种类型&#xff0c;包括但不限于以下几种&#xff1a; 鼓风机&#xff1a;提供曝气系统所需的气流。潜水污水提升泵&#xff1a;将污水从低处提升到高处。旋转式滚筒筛分机&#xff1a;对污水中的悬浮物进行分离和筛选。回旋式格栅&#xff1a;…