May_be一道代码执行绕过
题目:May_be
1 | |
这个正则表达式匹配的是一个函数调用,其中:
[^\W]+匹配一个或多个非特殊字符(字母、数字、下划线)\(左括号(?R)?递归匹配自身,用来匹配嵌套函数\)右括号
因此可以匹配 function_name(arg1, arg2),也能匹配嵌套调用,例如 function1(function2(arg1), arg2)。
意思就是 payload 里只允许字母、数字、下划线和 ( )。
最早尝试 a=$_POST[],但 $ 和 [] 也被过滤了。
最后的payload是
1 | |
将命令写在不被过滤的参数exp中,然后用get_defined_vars()获取已经定义的变量

格式化一下大概是这样

我们要取参数exp的值
先用 current 取到数组当前值,也就是 $_GET 的内容,它本身也是一个数组。

然后要取这个数组里的第一个值用pos方法
如果参数写后面的就用end方法
比如这样

现在可以执行任意命令了,
直接列出所有目录然后CTRL+F找flag

直接cat 读不到文件,权限不够
flag文件属性0700
发现cp有su权限
1 | |
Get flag!
第二天起来发现环境开不了了,所以这部分没图😓
May_be一道代码执行绕过
https://noeplex.com/2023/04/29/maybe/