每日一题 —— [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次阅读