BUUCTF-[极客大挑战 2019]Upload1

Source

目录​​​​​​​

题目:

分析:


题目:

分析:

一个文件上传漏洞

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

发现报错。

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

bp抓包:修改MIME

报错说不能是php文件 、绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht,这些后缀名都可以被当做php文件执行

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

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

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

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

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

php4种常见风格标签写法
1:正常写法
<?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。)


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

XXXXXX

</script>

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

成功上传!

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