[红明谷CTF 2021]write_shell
这题主要有两个知识点
1.php短标签
2.php可在``中执行系统命令
题目直接给出了源代码,看了一下源代码,利用点应该就是利用file_get_contents函数写shell获取我们需要的信息
在此之前我们还需要找到要写入shell的文件路径,这时我们可以发现可以通过?action=pwd进行查看
路径有了接下来试试能否正常写入
成功弹窗,照这么看这里还有xss
这题由于写入的文件是后缀名为php的,也就是说我们的语法就得满足php,并且达到命令执行的点。但这题把php给ban掉了,因为php的代码开始标签是<?php,这样就导致我们没办法进行php脚本的写入,这就很难受了。好在还有个php的短标签可以使用。
尝试了一下<?= ?>可以成功写入,这个<?= ?>相当于<?echo ?>,空格杯过滤了用%09代替
可以正常写入
接下来在学习一个新的知识点
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符"`"的效果与函数shell_exec() 相同。
注意:
关闭了 shell_exec() 时反引号运算符是无效的。
与其它某些语言不同,反引号不能在双引号字符串中使用。
接下来尝试一下执行命令ls / 查看根目录下的文件
看到一个类似flag的文件名
成功得到flag