每日一题 —— [PolarCTF]简单rce¶
打开观察代码,发现 eval 函数,并对传入字符串进行了简单的过滤。直接给出最后的 payload:
注意最后的还要提交一个 yyds=666 的 POST 请求。
现在来解析一下 payload:
首先看到 echo() 函数。这里没有过滤括号和 echo 也没有过滤反引号,所以 echo(`cmd`) 就可以直接执行系统命令。
然后看到反引号里面,我们直接输入 ls 可以发现能执行命令。但是他过滤了空格,因此我们需要使用 \t 。这个符号会在 php 执行过程中被转义成制表符,但是不会转义 \a 。所以我们的 php 会执行 c\at /flag 命令。
而到了 bash 里面,反斜杠是完全没有影响的,除非反斜杠后面跟着的是空格、引号或是另一个反斜杠。所以这个 payload 就正常执行了 cat /flag。
最后给出另一个 payload, 更加简单,原理就是重定向。
文章热度:0次阅读