[TOC]

ctfshow愚人杯 easy_ssti

考点:ssti漏洞(见笔记

image-20240911195417125

查看源码

image-20240911195446013

下载这个文件

image-20240911195520690

打开查看代码,分析可能在/hello/路径下存在ssti漏洞

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from flask import Flask
from flask import render_template_string,render_template
app = Flask(__name__)

@app.route('/hello/')
def hello(name=None):
return render_template('hello.html',name=name)
@app.route('/hello/<name>')
def hellodear(name):
if "ge" in name:
return render_template_string('hello %s' % name)
elif "f" not in name:
return render_template_string('hello %s' % name)
else:
return 'Nonononon'

1
进行{{}}测试,发现真是

image-20240911195713451

剩下的就是按照笔记那样的步骤一步一步走就行

重点强调一下如何找<class ‘os._wrap_close’>

1.先找到其位置

image-20240911200145243

2.查询<class ,再选中<class ‘os._wrap_close’>

image-20240911200237432

3.上下查询即可看到第几个。下标就是再-1。这里就是133-1=132.

image-20240911200338927

这道题在执行cat /flag命令时会Not Found。

猜测了一下,应该是将语句中的"/"当成目录了。

那就试试base64+管道符绕过。

注意要包一层反引号(命令执行),不然会被当做字符串echo出来。

1
('cat /fl*')替换成(' ` echo Y2F0IC9mKg== | base64 -d ` ')

最后得到flag。

image-20240911200749213

[GDOUCTF 2023]<ez_ze>

考点:ssti漏洞,fenjing一把梭

image-20240911204933643

输入1111,试试看

image-20240911205018866

表面在/get_flag路径下可能存在ssti漏洞。方法是post,变量是name。

image-20240911205753411

直接使用fenjing工具拿到flag。

image-20240911210006897

image-20240911210026354