无数字字母RCE
题目: RCE ME
1 |
|
方法
- 字符串取反绕过
- 字符串异或(同上)
payload
1 |
|
第一个字符括号内的结果是assert
,
第二个括号内结果是eval($_POST[1])
执行顺序是
- 解析变量 得到
assert
和eval($_POST[1])
- 调用eval,解析变量
- 调用assert,执行代码
Q
为什么不能直接构造
$_POST[1]
,而要加上assert(eval(..))
?A:
直接构造$_POST[1]
,执行的是1
eval('$_POST[1]');
作用仅限于解析了POST变量1
而不是所期望执行的1
eval($_POST[1])
先取得变量,再执行代码.
为什么不能直接构造
eval($_POST[1])
?
A:
如果可以使用字母,直接传递?code=eval($_POST[1]);
,可以达到效果,第一层eval获取了变量,第二层eval执行代码
但是不能使用字母时,由于eval不是一个php函数,而是语言构造器,不能采用可变函数的方式调用,同样的,echo、include…也不行。详情见php可变函数
无数字字母RCE
http://mekrina.github.io/blogs/RCE/无数字字母rce/