本题是无字母rce,字母被正则匹配过滤了,所以用到了取反绕过
把传参的命令先进行取反,再进行编码,之后在构建payload时,再次取反,这样的取反操作可以在字母被过滤的情况下,将命令编码,导致不会触发正则匹配的限制。
PS:在构建payload时,构建的payload要满足(~函数名)()的形式,否则php解释器无法执行函数
打开环境,有一个黑名单,一些符号被过滤了,一个正则匹配,,过滤字母
看完代码,要GET传参,参数名是wllm,那么应该是命令执行来查看flag,
正常的命令执行,先查看目录下的文件,因为要绕过正则匹配,所以进行取反编码(这里要查看上一级的目录才行所以是ls /)
?wllm=system('ls');
<?php
echo urlencode(~'system');
echo "\n";
echo urlencode(~'ls /');
>
进行GEY传参,cat /flag,拿到flag
第一次做取反编码的绕过方式,记录学习一下