CTF学习笔记——Include&Ping Ping Ping

一、[ACTF2020 新生赛]Include

1.题目

在这里插入图片描述

2.解题步骤

点进去看了一下
在这里插入图片描述
根据题目猜测,应该是和php的文件包含漏洞有关…尝试了一下显示phpinfo,意料之中的失败了,看wp才了解到,这是一道伪协议的题目。然后翻了一下之前的博客,复制一下payload,成功解题。

?file=php://filter/convert.base64-encode/resource=flag.php

在这里插入图片描述
在这里插入图片描述

3.总结
  1. 第二次做伪协议的题,只能说经验不足,没辨识出来,下次遇见类似这种?file=访问文件的题目时可以尝试。
4.参考资料

一、[GXYCTF2019]Ping Ping Ping

1.题目

在这里插入图片描述

2.解题步骤

一脸懵,试一下给ip送变量
在这里插入图片描述
是rce漏洞,但也有些关键字被过滤了
在这里插入图片描述
在这里插入图片描述
好想学会写脚本然后用脚本测试过滤了哪些…这里知道了漏洞类型,应该用穷举法测出哪些函数没有被过滤…出于懒惰还是看一眼wp吧…

是我败了,师傅的智慧果然是无穷的,直接读文件是我没想到的
在这里插入图片描述
在这里插入图片描述

(注: ls, cat是linux访问文件的命令)
看wp知道是因为空格被过滤了,师傅们使用的是${IFS}$绕过。系统自带的变量 $IFS 内部字段分隔符(Internal Field Separator, IFS)定义一个定界符,默认是空格。知道了原理,开始绕!
在这里插入图片描述

好↑的↓,是大括号被过滤了,师傅说改成$IFS$1…百度了半天不明白为什么要用$IFS$1

在这里插入图片描述
这里没访问到,师傅提示要访问index.php
在这里插入图片描述
爆出了源码,可以看到正则过滤了哪些内容。接下来有三种方法可以绕过。

  1. 变量拼接
 ?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

大意是构造一个变量a=g,然后正则没有匹配到flag,就绕过了。这里需要注意的是正则的形式。index.php下的代码含义为匹配字符串,是否按顺序出现flag这四个字母。所以如果$a放在前面解析,就会直接出现了flag四个字母,只有放到最后一个,才会有效果。

  1. sh绕过
 ?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

sh和bash都是linux的shell的一种,二者语法可以兼容。index.php过滤了bash的命令,但是没有过滤sh的命令。把flag.php这几个字转码base64再转回,即可绕过。

  1. 内敛执行
?ip=127.0.0.1;cat$IFS$1`ls`

将反引号内命令的输出作为输入执行。所以这句话就变成了 cat index.php flag.php。就会把两个文件显示出来。
在这里插入图片描述

3.总结
  1. 第三道rce的题,感觉核心就是绕过。这道题教会了我空格的绕过和三种字符串的绕过。
  2. 又熟悉了一下linux的命令。像ls cat 还有bash,sh的概念等等。
  3. 正则真的好玄学…变量拼接想了好久为什么只有拼最后一个才能绕,这个匹配规则真有趣…
4.参考资料

猜你喜欢

转载自blog.csdn.net/Obs_cure/article/details/108689122