SSTi模版注入-01基础

CTFbugku中有几道SSTI的题目,之前没接触过,借放假的时间系统的学学,加油!


  • 一个Hello world,了解一下语法先

from flask import Flask  # 导入模块

app = Flask(__name__)  # 创建视图函数

@app.route('/') # 设置装饰器路由,也就是设置访问目录
def index():
    return 'Hello world' # 设置页面返回值

if __name__ == '__main__':
    app.run() # 启动函数

  • 定义参数的格式,也可以定义python中常用的其他类型(str...)

from flask import Flask

app = Flask(__name__)

@app.route('/users/<int:user_id>')  # /users/是定位访问的路径,int是参数类型只能是int
def url_info(user_id):
    print(user_id)
    return 'Hello world {}'.format(user_id)

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

 

  • 设置用变量的形式访问

from flask import Flask,request

app = Flask(__name__)

@app.route('/users/')
def get_users():
    id = request.args.get('id')
    return 'user id :{}'.format(id)

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


.写个页面

<!DOCTYPE html>
<html>
    <head>
        <title>1111</title>
        <meta charset="utf-8"></meta>
    </head>
    <body>
        我的模板
        <br>{{key}}
    </body>
</html>
from flask import Flask,request,render_template

app = Flask(__name__)


@app.route('/')
def home():
    key = request.args.get('key')
    return render_template('index.html',key=key)
    
if __name__ == '__main__':
    app.run()

  • 试试key={{1-1}},并没有出现别人说的那样会进行运算,查了查资料发现是因为render_template函数自动渲染了对应的内容,只有render_template_string函数才会有再次渲染的问题出现,现实中开发几乎已经很少用这个render_template_string函数了,但是CTF中常见,试试就知道了

from flask import Flask, request, render_template_string

app = Flask(__name__)


@app.route('/')
def home():
    key = request.args.get('key')
    a = '''
    <!DOCTYPE html>
    <html>
        <head>
            <title>1111</title>
            <meta charset="utf-8"></meta>
        </head>
        <body>
            我的模板
            <br>{}
        </body>
    </html>
    '''.format(key)
    return render_template_string(a)  # 换为该函数


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

已经有明显的效果了,下一章节说说怎么利用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值