• 文件上传漏洞


    1. $is_upload = false;
    2. $msg = null;
    3. if (isset($_POST['submit'])){
    4. // 获得上传文件的基本信息,文件名,类型,大小,临时文件路径
    5. $filename = $_FILES['upload_file']['name'];
    6. $filetype = $_FILES['upload_file']['type'];
    7. $tmpname = $_FILES['upload_file']['tmp_name'];
    8. $target_path=UPLOAD_PATH.'/'.basename($filename);
    9. // 获得上传文件的扩展名
    10. $fileext= substr(strrchr($filename,"."),1);
    11. //判断文件后缀与类型,合法才进行上传操作
    12. if(($fileext == "jpg") && ($filetype=="image/jpeg")){
    13. if(move_uploaded_file($tmpname,$target_path)){
    14. //使用上传的图片生成新的图片
    15. $im = imagecreatefromjpeg($target_path);
    16. if($im == false){
    17. $msg = "该文件不是jpg格式的图片!";
    18. @unlink($target_path);
    19. }else{
    20. //给新图片指定文件名
    21. srand(time());
    22. $newfilename = strval(rand()).".jpg";
    23. //显示二次渲染后的图片(使用用户上传图片生成的新图片)
    24. $img_path = UPLOAD_PATH.'/'.$newfilename;
    25. imagejpeg($im,$img_path);
    26. @unlink($target_path);
    27. $is_upload = true;
    28. }
    29. } else {
    30. $msg = "上传出错!";
    31. }
    32. }else if(($fileext == "png") && ($filetype=="image/png")){
    33. if(move_uploaded_file($tmpname,$target_path)){
    34. //使用上传的图片生成新的图片
    35. $im = imagecreatefrompng($target_path);
    36. if($im == false){
    37. $msg = "该文件不是png格式的图片!";
    38. @unlink($target_path);
    39. }else{
    40. //给新图片指定文件名
    41. srand(time());
    42. $newfilename = strval(rand()).".png";
    43. //显示二次渲染后的图片(使用用户上传图片生成的新图片)
    44. $img_path = UPLOAD_PATH.'/'.$newfilename;
    45. imagepng($im,$img_path);
    46. @unlink($target_path);
    47. $is_upload = true;
    48. }
    49. } else {
    50. $msg = "上传出错!";
    51. }
    52. }else if(($fileext == "gif") && ($filetype=="image/gif")){
    53. if(move_uploaded_file($tmpname,$target_path)){
    54. //使用上传的图片生成新的图片
    55. $im = imagecreatefromgif($target_path);
    56. if($im == false){
    57. $msg = "该文件不是gif格式的图片!";
    58. @unlink($target_path);
    59. }else{
    60. //给新图片指定文件名
    61. srand(time());
    62. $newfilename = strval(rand()).".gif";
    63. //显示二次渲染后的图片(使用用户上传图片生成的新图片)
    64. $img_path = UPLOAD_PATH.'/'.$newfilename;
    65. imagegif($im,$img_path);
    66. @unlink($target_path);
    67. $is_upload = true;
    68. }
    69. } else {
    70. $msg = "上传出错!";
    71. }
    72. }else{
    73. $msg = "只允许上传后缀为.jpg|.png|.gif的图片文件!";
    74. }
    75. }

    上传图片马服务器

    注意:

    1.保证上传后的图片马中仍然包含完整的一句话webshell代码。

    2.使用文件包含漏洞能运行图片马中的恶意代码。

    首先制作一个图片马

     然后上传图片马到服务器,保存上传后的图片,可以使用记事本查看一句话木马消失

    使用010editor比较,查看哪些内容没有被混淆,接着将一句话木马插入到没有被混淆的内容中

    然后直接文件包含,包含图片内的php代码

     

  • 相关阅读:
    后端大厂面试-16道面试题
    2022亚太数学杯数学建模竞赛A题(思路分析......)
    【taichi】关于SPH_Taichi的探索与尝试
    Java毕设项目——智能仓储系统(java+SSM+Maven+Mysql+Jsp)
    48从零开始用Rust编写nginx,搭建一个简单又好看官方网站
    STM32MP157A驱动开发 | 03-usb host接口的使用(U盘 )
    spring 注解: 更加简单的存储 Bean
    【前端框架的发展史详细介绍】
    Android Studio代码无法自动补全
    Allegro DFM Ravel Rule工具使用指导书
  • 原文地址:https://blog.csdn.net/m0_73113764/article/details/132778205