昨天我发现了一个问题
1 |
|
$a是36进制的eval转换成的10进制
所以这个代码其实就是eval(system("dir"));,但是运行的时候却报错了
1 | PHP Fatal error: Uncaught Error: Call to undefined function eval() |
然后去网上了解了才知道
eval 属于PHP语法构造的一部分,并不是一个函数,所以不能通过 变量函数 的形式来调用`
类似的语法构造还有:echo,print,unset(),isset(),empty(),include,require…
就比如
1 | print "asdasd"; |
直接print "asdasd"就可以打印出字符,但是自己构造的函数却没有办法这样。
所以网上有的一句话木马来调用eval的其实都不可以,换成assert就可以了。