一、本地文件包含
法一:
点进去后使用Hackbar,用密码查找目录下文件(在地址上加?file=)
查到两个文件,没有flag
返回根目录下查找,输入ls / (中间有空格)
找到好多文件,其中有flag
输入以下指令直接找flag
得到flag。
法二:蚁剑
右键添加数据,地址中加?file=,密码为ctfhub
添加完数据后打开终端,查找目录下文件,输入ls,没有flag
返回查找根目录,输入ls /,里边有flag文件
输入cat /flag查找flag
二、远程文件包含
PHP的配置文件php.ini里allow_url_fopen和allow_url_include为ON
改变请求方法为post可在下方请求数据。使用伪协议,输入?file=php://input,下方随便输,发现出现在右侧
输入<?php system('ls');?>找到俩文件
输入<?php system('ls /');?>找到flag文件
输入<?php system('cat /flag');?>找到flag
三、php://input 伪协议
题一:
抓包,在上方输入?file=php://input,下方输入<?php system('ls')?>查看目录下文件(因为用了伪协议所以GET传参也能用)
没有flag,再输入<?php system('ls /')?>查根目录
有一个很像flag,输入<?php system('cat /flag_11490')?>查看(用原文件名),找到了
题二:
框中长语句表示php://会被绕过,while循环限制了pphphp这种写法也不可用
str_replace可使用改变字母大小写的方式进行替换,注意将file改为page,然后在下方查找目录下文件
这个有点像
输入<?php system('cat fl4gisisish3r3.php')?> (在目录下就不用/了)
四、php://filter 伪协议(读文件)
将文件进行base64编码再读出,即在file=后,flag前加上php://filter/read=convert.base64-encode/resource=
得到一串base64编码
将其复制到Burp中进行解码,得到flag
本题已给flag文件,直接过滤即可