注:flask在遇到报错时,如果开启了debug模式,就可以在web上建立一个交互式shell进行python调试,但是需要PIN码,PIN码是可以破解的
1、python的版本
注:不同的python版本,init.py中PIN的算法可能不同
下面列举两种不同版本:
python3.5
python3.11
2、werkzeug更新导致flask debug pin码生成方式的改变
1、截图中是3.5版本的,于是在虚拟机中配置了一套python3.5的python环境
2、这里又有一个坑点,配置好了python之后呢,既然是破解PIN码,肯定是需要安装flask,然后看看对应版本中PIN的算法,这里直接使用pip安装会报错,pip会说版本太低了,要先升级,升级完成之后就会报错如下
解决方案:
https://bootstrap.pypa.io/pip/3.5/get-pip.py
将网址中的python文件下载到本地,然后运行
python get-pip.py
1、先打开__init__.py文件
2、放到编辑器中调试(注意需要导入相关库)
3、这里需要找到6个参数
(1)、username
查看/etc/passwd或者/proc/self/environ
(2)、modename
一般固定值:flask.app
(3)、appname
一般固定值:Flask
(4)、app.py绝对路径
在报错页面可以看到
(5)、uuid(mac地址)
查看/sys/class/net/eth0/address或者改为别的网卡
这里是16进制,需要转为十进制
(6)、机器id
旧版(依次读取):
/proc/self/cgroup、/etc/machine-id、/proc/sys/kernel/random/boot_id
新版(依次读取后拼接):
/etc/machine-id、/proc/sys/kernel/random/boot_id
/etc/machine-id+/proc/self/cgroup
/proc/sys/kernel/random/boot_id+/proc/self/cgroup
4、得到全部参数后,运行脚本,将得到的PIN码输入到,即可开启debug调试模式