flask–通过算pin码进入控制台

文章讲述了在一场网络安全竞赛中,如何利用Flask应用开启的debug模式,通过任意文件读取漏洞获取敏感信息,以及通过计算特定参数(如MAC地址、machine_id)生成pin值,最终实现代码注入(RCE)。

知识源于周赛的一道题目–NSSCTF(PingPong)

进入题目首先知道两个信息–框架是flask–首先考虑是不是存在ssti第二个是题目描述中的信息(开启了debug模式)

其实之前并没有接触过这个东西,但是还是通过其他方式非预期做出来了。(也有出题人的原因hhh

flask在开启debug模式下,可以通过输入pin码进行代码调试模式,也就是console控制台。进入控制台之后再进行命令执行

但是这个东西怎么算呢?需要获得几个东西

  • 1. username,用户名
  • 2. modname,默认值为flask.app
  • 3. appname,默认值为Flask
  • 4. moddir,flask库下app.py的绝对路径
  • 5. uuidnode,当前网络的mac地址的十进制数
  • 6. machine_id,docker机器id

很多都是默认的,重点需要关注三个东西

  1. moddir:flask所在的路径,通过查看debug报错信息获得
  2. uuidnode:通过uuid.getnode()读取,通过文件/sys/class/net/eth0/address得到16进制结果,转化为10进制进行计算
  3. machine_id:linux的id一般存放在/etc/machine-id或/proc/sys/kernel/random/boot_id,docker靶机则读取/proc/self/cgroup

下面是完整的解题过程

首先观察发现题目存在任意文件读取漏洞:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值