——CTF解题专栏——
声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。
题目信息:
题目:Simple_SSTI_1
作者:valecalida
提示:无
场景:
解题思路:
You need pass in a parameter named flag。(你需要传一个名字为flag的参数),想让我们传参数,那我们就传呗。
解题步骤:
一、传送参数flag
http://114.67.175.224:13504/?flag=?
直接有显示,试试sql注入?
http://114.67.175.224:13504/?flag=1' and '1'='1--+
就挺尴尬的,题目SSTI是服务器端模板注入,我搁这儿试sql注入。
http://114.67.175.224:13504/?flag={{2*3}}
哦?有ssti注入漏洞?tplmap登场
二、tplmap尝试
最后显示没注入点???不该啊,使出必杀技《奥义-秘术-答案之术》flag{0866f097bc8a992bc298142d5e19a0d7}
三、原理解析
http://114.67.175.224:13504/?flag={{config.SECRET_KEY}}
(⊙﹏⊙)很难绷,怎么想到去config的secret_key的,直到我想看看源码的时候(后面加上的)
在最后有一个隐藏文字。
You know, in the flask, We often set a secret_key variable.
你知道,在Flask中,我们经常设置一个叫做“secret_key”的变量。
这是一个线索,百度一下,在 Flask 中,双大括号 {{ }} 用于表示动态内容的占位符,该内容将由模板引擎渲染。这被称为模板语法。 当你在 Flask 模板中使用双大括号把变量或表达式括起来时,它告诉模板引擎去计算该表达式并将其值插入到渲染后的 HTML 文档中。 例如,你提供的代码 flag={{config.SECRET_KEY}} 将会在 HTML 文档中的该位置渲染 Flask 应用程序的秘密密钥。
可是为什么SECRET_KEY为什么要关联config呢?继续查资料。
在Flask项目的配置中都是通过app.config对象来进行配置的。比如要配置一个项目的SECRET_KEY,可以使用app.config['SECRET_KEY'] = "xxx"来进行设置。
(⊙o⊙)?懂了,但没完全懂。评论区有大佬帮忙解释下吗?
总结:
难度:★★☆☆☆☆☆☆☆☆
难度真的不高,甚至很简单,签到题,/(ㄒoㄒ)/~~大佬,菜菜,帮帮。
文章是自己的解题步骤,侵删。有需要工具的小伙伴可以私信哈,无偿,直接qq发你。