昨天我发现了一个问题
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
就可以了。