网络安全(DVWA命令执行漏洞)—代码审计思路
?php if( isset( $_POST[ Submit ] ) ) { //查看前端传入的post值submit是否为空 // Get input $target trim($_REQUEST[ ip ]); //获取get、post、cookie的ip值传参赋值给$target // Set blacklist $substitutions array( //定义数组变量名为$substitutions , ; , | , - , $ , ( , ) , , || , ); // Remove any of the charactars in the array (blacklist). //str_replace子字符串替换 $target str_replace( array_keys( $substitutions ), $substitutions, $target ); //返回数组中部分的或所有的键名 //将传入的$target的‘ip’值里的$substitutions的keys值都替换成$substitutions里的意思空值。 // Determine OS and execute the ping command. if( stristr( php_uname( s ), Windows NT ) ) { // Windows //查询字符串首次出现的位置并且忽略大小写 //如果是windows的话 $cmd shell_exec( ping . $target ); } // 执行ping命令到$target else { // *nix $cmd shell_exec( ping -c 4 . $target ); //否则就ping -c 4次 $target } // Feedback for the end user echo pre{$cmd}/pre; } ?以上代码是DVWA靶场的高级等级的命令执行漏洞上的页面代码下面先说一下整体思路这篇代码是由php语言编写的所以在这段代码里碰到不熟悉的函数我们需要查找函数对应的意思。可以在网页上查询php语言里的函数语义有工具的也可以使用工具比如php手册等。首先要明白最基础的if如果if里的值为真就执行if下花括号{}里面循环体也就是代码反之如果为假就执行else里的循环体代码。等我们查询完函数之后再结合语义带入到if里大致思路就是这个意思哈咱们接着往下看。正文开始已经提前对一些函数进行了注释帮助代码审计时进行更好的理解让我们从第一行代码开始理解第一行我们先看到了 if( isset( $_POST[ Submit ] ) ) 上来就看到了if表示if里面的值为条件条件如果为真就执行下面的代码。那么if里面的意思是什么呢我们先从里面看$_POST[]的意思学过php语言的都了解大致就是从前端通过[]内定义的值传参到后面。通过$_POST的变量可以把你在页面上输入的字符串传到我后端上来。$_POST外面的isset函数的意思是检查变量是否为空isset()里面有值的话就为真。下面直接用isset做实验$_ERQUEST[]表示post和get传参都可以赋值到一个变量$cnd。再前端url里随便写入一个命令值输出isset结果表示为1说明条件为真。再看第二行$target trim($_REQUEST[ ip ])trim函数的意思是取出字符串首尾的空白字符也就是括号里面的字符串输出之后是没有空格的下面是trim使用过程可以看到我填写了一个都是空格的变量用trim函数输出之后空格没了。而$_REQUEST的意思和$_GET、$_POST一个意思从前端传参到我们后端。我们再来看第三行$substitutions array( ,; ,| ,- ,$ ,( ,) , ,|| ,); 很明显这就是一个关联数组前面为键后面为值。再看第四部分$target str_replace( array_keys( $substitutions ), $substitutions, $target );这一行是重点虽然看着字母多但是我们拆开来逐个分析先看函数里面的array_keys函数这个函数的意思是返回数组中部分的或所有的键名。我们来做个实验我们定义一个关联类型的数组然后查看array_keys的数据类型再定义数组的时候分为键和值然后我们再数组外面加了一个array_keys的函数进行查看可以看到输出出来的是索引、类型和它的键也就是这个数组的‘name’、‘age’、‘id’这三个。那么就说明array_keys的作用就是挑选这个数组的 前面的键的值组成一个数组。右面的图是解析当前的这个数组。可以直观看到keys函数返回的是里面数组的键值。然后再回来看这行的str_replace函数他的意思是子字符串替换。结合上面几行如下图所示第一个参数是keys的一个数组第二个参数是一个完整数组第三个参数是前端传参过来的值下图为直观改为后端输入的值。一共有三个参数可以看到输出之后得知已经没有乱七八槽的特殊符号了。我们的参数1是要换掉的部分参数2可以理解为换掉成为什么数字本函数里是替换成为 ‘ ’ 空值。参数3是写入的整体1和2是要作用再参数3的身上。这样我们总结一下上部分的代码含义为你输入的内容如果是真的那么需要由代码先来过滤把你输入的含有 | -$ () || 的数值转换成空值。然后我们看下部分的内容if( stristr( php_uname( s ), Windows NT ) )先解析php_uname(s),的含义php_uname官方解读是返回运行 PHP 的系统的有关信息其中‘s’属性是返回操作系统名称stristr()的含义是查找字符串的首次出现。如果目前系统是“windows NT”的话就执行下面循环体的内容如果不是就执行else里的内容。我们再来看循环体内的内容第一个IF内的内容是执行ping命令后面的变量跟的是你输入的已经替换过的值。第二个else的内容为如果不是就执行4次ping命令跟你输入的已经替换过的值。所以下部分总结为先查看你当前操作的系统是否为“windows NT”。如果是的话就直接ping你输入的IPwindow系统自动oing4次如果不是的话就手动命令ping4次你输入的IP最后输出你输入的IP

相关新闻

超级详细的 FinalShell 安装 及使用教程

超级详细的 FinalShell 安装 及使用教程

一、引言FinalShell 是一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件,同时支持 Windows,macOS,Linux,它不单单是一个 SSH 工具,完整的说法应该叫一体化的的服务器,网络管理软件,在很大程度上可以免…

2026/8/26 20:30:54 阅读更多 →
ENVI5.6 安装教程,新手入门(超详细)附安装包和常见问题

ENVI5.6 安装教程,新手入门(超详细)附安装包和常见问题

ENVI是一个完整的遥感图像处理平台,广泛应用于科研、环境保护、气象、农业、林业、地球科学、遥感工程、水利、海洋等领域。目前ENVI已成为遥感影像处理的必备软件,包含辐射定标、大气校正、镶嵌裁剪、分类识别、阈值分割等多种功能。ENVI针对绝大部分的…

2026/8/26 20:30:54 阅读更多 →
X96 X10 Pro_晶晨S928X-J芯片机顶盒_安卓11.0_刷机固件包

X96 X10 Pro_晶晨S928X-J芯片机顶盒_安卓11.0_刷机固件包

X96 X10 Pro_晶晨S928X-J芯片机顶盒_安卓11.0_刷机固件包刷机固件下载:链接: https://pan.baidu.com/s/1EyYgLNZlxv-UvHpmTRxA_g?pwd5v8w 提取码: 5v8w链接:https://www.123865.com/s/Jbe8Vv-DwGN 提取码:6688备用链接: 链接&…

2026/8/26 20:30:54 阅读更多 →

最新新闻

华为OD机试采样过滤算法多语言实现与优化

华为OD机试采样过滤算法多语言实现与优化

1. 项目背景与核心需求 华为OD机试作为华为技术岗位的重要选拔环节,其双机位监考模式下的编程题往往需要考生在算法设计、代码规范、边界处理等方面展现出扎实的功底。"采样过滤"作为C卷的典型题型,主要考察以下核心能力: 多语言实…

2026/8/26 21:53:58 阅读更多 →
Android计步应用开发:从传感器数据到健康助手的完整实践

Android计步应用开发:从传感器数据到健康助手的完整实践

1. 项目概述:从计步器到健康助手最近在整理手机上的应用,发现一个挺有意思的现象:几乎每个手机系统都自带一个“健康”或“运动”应用,核心功能之一就是计步。但用久了总觉得差点意思,要么数据不准,要么功能…

2026/8/26 21:53:58 阅读更多 →
基于SnowNLP的中文情感分析实战:原理、可视化与工程落地

基于SnowNLP的中文情感分析实战:原理、可视化与工程落地

简介:在自然语言处理(NLP)领域,情感分析是理解用户反馈、洞察产品口碑的基础技术之一。面对海量中文评论文本,如何高效判断情绪倾向并直观呈现结果,是数据分析和产品运营的常见痛点。SnowNLP作为一款轻量级…

2026/8/26 21:53:58 阅读更多 →
大疆mini3新手防炸机指南:从入门到安全飞行

大疆mini3新手防炸机指南:从入门到安全飞行

第一次看到“大疆mini3,年轻人的第一台炸鸡”这个说法时,我愣了一下。炸鸡不是吃的,是“炸机”。标题把它写成“炸鸡”,反而多了一点黑色幽默:一个大学生攒了很久的生活费,终于拿到心心念念的航拍机&#x…

2026/8/26 21:53:58 阅读更多 →
美团大模型产品岗面试指南:技术、产品与商业能力解析

美团大模型产品岗面试指南:技术、产品与商业能力解析

1. 面试准备:理解大模型产品岗的核心能力模型美团大模型产品岗位与传统互联网产品经理存在显著差异,它要求候选人同时具备三个维度的复合能力:技术理解力、产品设计能力和商业敏感度。根据美团近两年的招聘JD分析,技术维度重点考察…

2026/8/26 21:53:57 阅读更多 →
VOC+YOLO格式玻璃瓶塑料瓶检测数据集:8943张图片实操指南

VOC+YOLO格式玻璃瓶塑料瓶检测数据集:8943张图片实操指南

简介:目标检测作为计算机视觉的核心任务,其落地效果很大程度上依赖高质量的数据集与合理的标注格式。在数据准备阶段,VOC格式与YOLO格式是两种最常接触的标注规范:VOC通过XML记录目标的绝对坐标,YOLO则采用txt存储归一…

2026/8/26 21:52:57 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →