查看源码,发现有一个 achieve_room.php
,打开burp,抓包,发现其有一个隐藏的回应 secr3t.php
http://775fc2bb-8c0b-479c-ad02-65fecd0225ed.node4.buuoj.cn:81/secr3t.php
打开php如图:
试着直接打开flag.php
,发现没有,然后看wp说可以用php伪协议来读取flag.php
构造playload:
http://775fc2bb-8c0b-479c-ad02-65fecd0225ed.node4.buuoj.cn:81/secr3t.php?file=php://filter/convert.base64-encode/resource=flag.php
得到如图:
base64解码即可得到flag
总结:学到了php伪协议来读取flag.php相关知识
来自百度:php://filter/
是一种访问本地文件的协议,/read=convert.base64-encode/
表示读取的方式是 base64 编码后,resource=flag.php
表示目标文件为flag.php
。问什么要进行 base64 编码呢?如果不进行 base64 编码传入,flag.php
就会直接执行,我们就看不到文件中的内容了。php 协议还常用 php://input,这可以访问请求的原始数据的只读流,可以读取 POST 请求的参数。