一道有关Flask开启DEBUG结合任意文件读取生成PIN码攻击的题目。可惜没有及时截图,现在只剩下文字了,凑合记录一下。
-
正常注册用户,登陆用户,查看源代码发现在打开图片时,图片名由base64编码
-
利用其解析base64的漏洞,进行目录穿越,例如对“…/…/…/…/etc/passwd"进行base64编码后查看响应包获得文件内容
-
由于存在文件读取漏洞,所以可以依次读取:
username: /etc/passwd machine-id: /etc/machine-id mac_address: /sys/class/net/eth0/address
-
通过对服务器提交错误表单触发报错进入DEBUG页面,获得"app.py"绝对路径
-
结合通过3,4,app_name(Flask),mode_name(flask.app)共六个内容:
-
通过POST错误数组进入DEBUG页面,点击console图标输入pin码即可获得debug权限
-
通过python shell获取flag内容
os.popen("ls").readlines()