记录一下文件上传的常见姿势,更全面的可以做upload-labs。

实验环境:win2003 phpstudy

实验平台:upfile

一、准备上传的一句话木马

eval函数将接受的字符串当做代码执行

二、实验步骤

2.1 无防护上传

可以直接上传一句话木马文件

可以看到已经成功上传,并返回了相关信息。

可以使用菜刀连接

实际上权限已经有很多,但是也可以用一句话木马上传大马进行其他操作。

2.2 前台脚本检测扩展名

这里增加在前端增加了限制,如果直接上传php文件会被拒绝

可以先把文件改成允许上传的格式,比如jpg格式,

然后进行抓包,通过前端的检测之后再进行改包:

这样上传成功了,再通过工具连接:

2.3 服务器验证Content-type检测文件类型

这样直接上传也是不能通过的:

因为检测的地方是Content-type,所以抓包替换成可以上传的type就可以了:

可以看到,文件本身没有变化,但是最后也成功上传了。

2.4 服务器端验证文件扩展名

这样后端进行验证,利用办法是修改文件上传的扩展名,结合解析漏洞利用。

首先对上传的php文件进行抓包:

最后修改不再黑名单内的扩展名。成功上传,但是要配合阿帕奇的解析漏洞(2.0-2.2版本),否则不能执行成php文件

也可以根据情况使用00截断(这里是举例记录):
首先文件改名为1.phpp.jpg

然后上传时候进行抓包:

把phpp的第二个p的16进制改成00,这样p就变成了空格

这样上传成功后变成了1.php空.jpg

这样就能执行php文件,但是这样上传的时候如果后端用函数也检测到时php文件,那么也上传不成功,所以根据情况利用。

2.5 服务端验证图片文件头

这种防护方式会对文件内容进行检测:

如果只是修改文件的扩展名,也是不能绕过检测,所以这时候利用的方式就是用真的图片加上一句话木马构造成图片马上传(可以直接txt格式打开图片或者利用命令行),然后再根据场景把图片还原成php文件进行执行。

Upfile的几种常见姿势的更多相关文章

  1. SpringBoot 处理异常的几种常见姿势

    SpringBoot 处理异常的几种常见姿势 1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常 这是目前很常用的一种方式,非常推荐.测试代码中用到了 ...

  2. 【代码审计】后台Getshell的两种常规姿势

    0x00 前言 在早些年刚接触web安全的时候,基础套路都是找注入--找后台--找上传点--找数据库备份--Getshell,然而在代码审计的角度,也存在类似的基本操作. 这里结合代码实例介绍白盒Ge ...

  3. 几种常见的Shell

    Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说有多少种Shell,其实说的是Shell脚本解释器. bash bash是L ...

  4. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法

    本文出处: http://www.cnblogs.com/wy123/p/5958047.html 最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫,不知道各种 ...

  5. JSP之WEB服务器:Apache与Tomcat的区别 ,几种常见的web/应用服务器

    注意:此为2009年的blog,注意时效性(针对常见服务器)     APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等 ...

  6. 四种常见的App弹窗设计,你有仔细注意观察吗?

    弹窗又称为对话框,是App与用户进行交互的常见方式之一.弹窗分为模态弹窗和非模态弹窗两种,两者的区别在于需不需要用户对其进行回应.模态弹窗会打断用户的正常操作,要求用户必须对其进行回应,否则不能继续其 ...

  7. 几种常见语言的命名空间(Namespace)特性

    命名空间提供了一种从逻辑上组织类的方式,防止命名冲突. 几种常见语言 C++ 命名空间是可以嵌套的 嵌套的命名空间是指定义在其他命名空间中的命名空间.嵌套的命名空间是一个嵌套的作用域,内层命名空间声明 ...

  8. 解析XML文件的几种常见操作方法—DOM/SAX/DOM4j

    解析XML文件的几种常见操作方法—DOM/SAX/DOM4j 一直想学点什么东西,有些浮躁,努力使自己静下心来看点东西,哪怕是回顾一下知识.看到了xml解析,目前我还没用到过.但多了解一下,加深点记忆 ...

  9. (转)四种常见的 POST 提交数据方式

    四种常见的 POST 提交数据方式(转自:https://imququ.com/post/four-ways-to-post-data-in-http.html) HTTP/1.1 协议规定的 HTT ...

随机推荐

  1. 11 shell中内置关键字[[]]:检查条件是否成立

    0.[[]] [] (())的对比 1.[[]]支持正则表达式 0.[[]] [] (())的对比 [[ ]] 对数字的比较不友好,所以使用 if 判断条件时,建议用(())来处理整型数字,用[[]] ...

  2. SEO入门一篇就够-SEO教程

    大家口中的SEO(Search Engine Optimization),中文翻译为"搜索引擎优化",从本质上来说,其实就是如何迎合搜索引擎的规则,使得网站在搜索结果中能有更好的排 ...

  3. Python单元测试框架unittest之单用例管理(一)

    一.概述 本文介绍python的单元测试框架unittest,unittest原名为PyUnit,是由java的JUnit衍生而来,这是Python自带的标准模块unittest.unittest是基 ...

  4. P5816 [CQOI2010]内部白点 题解

    [题目链接] [解析] 好题. 拿到题目首先先看一下它的无解情况是怎么判断的. 然后很明显这个是不存在无解情况的. 因为它的黑点开始都是给定了的,可以理解为一个边界. 而新的变化的黑点不会往外扩张,那 ...

  5. celery task异步任务

    业务端后台:通过python manage运行 运行用例时,用python manage运行时会卡,影响效率 celery task 本身自己也是个服务,异步处理case 异步:小明去给我买个东西,我 ...

  6. 八大排序算法~简单选择排序【记录下标k变量的作用】

    八大排序算法~简单选择排序[记录下标k变量的作用] 1,思想:打擂台法,数组中的前n-1个元素依次上擂台"装嫩",后边的元素一个挨着一个不服,一个一个上去换掉它 2,优化:通过记录 ...

  7. 如何使用odoo的compute方法,自动计算odoo字段

    前言 在odoo的ORM创建数据字段的过程中,我们会经常需要定义一些字段用来计算某一些字段只和或其他计算结果. 今天介绍一个很好用的方法compute计算属性,这个方法其实是属于写在odoo fiel ...

  8. odoo里面条件写法

    attrs="{'invisible': ['|', ('probability', '>', 0), ('active', '=', True)]}"/>. 写法gt ...

  9. 带标签的for循环

    for循环可以加标签,使用break或者continue时,若存在多层嵌套循环可指定标签的for循环 public class ForLabel { public static void main(S ...

  10. salesforce Integration 概览(一) 杂篇

    本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在做sales ...