打开题目
很熟悉的源代码界面。
简单的审计一下。
这里提到了php://
然后if这段代码的意思是file里的前六个字符必须要等于php://(===表示强制等于)
这里回到题目,题目是php://input ,这里引入知识点:
php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data
大家肯定也会去搜一堆的资料啊,什么读取什么内容啊,我是没太看明白,后面大概总结了一下就是,这里可以通过php://input进行命令执行,也就是存在RCE漏洞,这样说大家明白了吧。
也就是可以通过php://input 直接post传入命令。
尝试一下。
直接构造请求头,get传入?file=php://input
post传入<?php system("ls");?>
看到可以执行。
那就下一步了,找flag。至于找的过程。这里就不细细展示了,可以ls ../../../../../一步步慢慢来,
也可以find,都好
。
最后找到flag,本题结束。
这道题的关键就在理解php://input协议。