Loading

echo被禁用写入webshell[记一次有意思的出题记录]

最近在给社团的同学们出RCE部分的题,我就在想能不能出的有意思点,于是有了这道题目:

R C E to RCE

第一次出这种类型的题,借用了CTFSHOW的过滤

正如我之前在线下分享的时候说过的一句话,做CTF题有时候需要有题目理解能力,很多时候从题目的名称都能窥探到这个题目的大概方向。为了这句话,我想了一段时间,题目究竟叫什么比较好。最后定了这个题目名称。零散的RCE最后拼接成了RCE这个单词。就如同这个题目一样,零散的三个片段并不能做什么,然而当三者聚合在一起,却可以RCE(命令执行)。

0x00 出题背景

其实这个题目也是那天跟大佬们学习的一种方法,在我们本次的环境当中,我无法使用原payload中的<>代替空格,于是以为本题无解。然而平台上却有人做出了这道题。后来得知,使用了<来代替空格。经过试验,确实如此。我又想尝试>这个是否也可以代替空格。于是输入payload ls>-al 却并没有代替空格,反而生成了一个文件-al。猛然想起这是Linux的重定向符,他会将结果输入到指定的文件。就这样,有了这道题。

同时,在社团下课的时候,大家绕过这道题的时候,有同学曾产生过一个疑问,为什么我ls以后会出现例如 f???.???的文件,怎么写进去的呢?或许跟重定向有关。

0x01 解题

首先ls查看目录:

会发现这个ls很奇怪,怪就怪在多了个A。

此时,如果你不查看网页源代码,将错过预期解

查看网页源代码:

会发现其中居然有一个webshell。

实际上这个webshell是这么组成的:

会发现我往目录里写了两个文件,现在是否豁然开朗了?

直接输入:

ls>f.php即可

之后到f.php代码执行:

右键查看源代码即可。

需要注意两个问题:

1.不能重定向到数字开头的,如:1.php 因为会被过滤

2.不能重定向到大写字母开头的,如:F.php 此时F.php会进入webshell,导致错误:


3.不能写在e之前的字母,如 a.php

仍然会导致错误
所以本题的限制条件比较多,写马的时候应该注意ls重定向问题。

题目比较简单,实际环境或许是echo被禁用是否可以写入一个webshell的问题

posted @ 2021-11-20 01:37  mi2ac1e  阅读(236)  评论(0编辑  收藏  举报