BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1

启动环境后,是一个简简单单的页面:BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第1张图片


看样子是能够触发远程执行漏洞的。尝试下ping 127.0.0.1,如果有回显说明我们的想法是对的。BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第2张图片


最近才学习的nc反弹shell。想着是否能用nc反弹shell的办法。控制服务器然后输出flag呢?于是我测试下服务器是否存在nc命令(当然这是天真了,nc是需要自己下载的,哈哈):BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第3张图片


发现没有回显,证明这个方法是不可用的。而且难不保服务器上开启了防火墙利用起来更加困难。只是提供个思路罢了。接着我们常规输出ls:BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第4张图片


发现当前目录下有2个php文件。尝试去输出flag文件:BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第5张图片


猜测是过滤了空格,那我们就尝试绕过空格,在Linux系统中$IFS是可以绕过空格的:

BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第6张图片


回显告诉我们,可能flag这几个字符也被过滤了。因此我们尝试看看另外一个文件写的什么:

BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第7张图片


文件的输出让我们看到这是过滤规则。看来我们的猜测是正确的。因此我们要想另外的办法绕过flag这个字符。因此我们可以这样构造:

playload=?ip=127.0.0.1;b=ag.php;a=fl;tac$IFS$1$a$b

这个构造的意思是,我们创建2变量,并采用传参的方式来绕过直接写flag。其实等价于tac$IFS$1flag.php。输出结果如下:

BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1_第8张图片


得到flag。这题还有其他绕过方式。我在网上看到别的师傅有用base64编码绕过的。我尝试了下但是我没有打通。不知道为啥。有兴趣的可以研究下。

你可能感兴趣的:(网络)