2023香山杯复现与学习[231016]
MISC
PINTU
STU:图片隐写
使用python库:pillow&PIL
安装
1 | pip install Pillow |
使用方法
使用open加载图片
1
2
3
4
5
6
7
8
9
10
11
12from PIL import Image
im = Image.open('Mycat.jpg') #im是一个Image对象,属性有format,size,mode
#format是格式,size是元组,表示宽和高,mode是图片的模式
---------------------------------------------------------------------------------------
from PIL import Image
im = Image.open('Mycat.jpg')
print im.format, im.size,im.mode
---------------------------------------------------------------------------------------
#console输出如下:
JPEG(245,280) RGB使用show来调试和测试,呈现图片
1
2
3from PIL import Image
im = Image.open('Mycat.jpg')
im.show()图片的读写操作
1
2
3
4
5
6
7
8
9
10
11
12infile = 'Mycat.jpg'
f,e = os.path.splitext(infile)
outfile = f + '.png'
try:
Image.open(infile).save(outfile)
except IOError
print "cannot convert",infile
--------------------------------------------------------------------------------------
#image.open() 读文件
#image.save() 保存文件 save方法来进行图片的格式转换
#os模块中的os.path.splitext() 方法可以讲文件名和拓展名分离开,图片的格式转换图片的操作
图片剪切
1
2
3
4
5
6
7im = Image.open('Mycat.jpg')
box = (150,150,245,280)
region = im.crop(box)
region.show()
---------------------------------------------------------------------------
#crop() 方法来从图片中剪切一块区域,上面是提取矩形图片黏贴
1
2
3
4
5
6
7im = Image.open('Mycat.jpg')
box = (50,50,200,200)
region = im.crop(box)
#逆转180到原来位置
region = region.transpose(Image.ROTATE_180)
im.paste(region,box)
im.show()
图像序列
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
38form PIL import image
im = Image.open("cat.gif")
im.seek(1)
im.show()
try:
while 1:
im.seek(im.tell()+1)
im.show()
except EOFError
pass
---------------------------------------------------------------------------------
#GIF多帧图片,即序列文件,PIL自动打开序列文件的第一帧,seek和tell方法在不同帧移动
#tell-->帧数 seek-->取当前帧数
----------------------------------------------------------------------------------
#while循环
from PIL import Image
im = Image.open("cat.gif")
im.seek(1)
im.show()
try:
while 1:
im.seek(im.tell()+1)
im.show()
except EOERROr
pass
---------------------------------------------------------------------------------
#for循环 ImageSequence模块的Iterator方法
from PIL import Image
from PIL import ImageSequence
im = Image.open("cat.gif")
for frame in ImageSequence.Iterator(im):
frame.show()读取像素和修改像素
EXP1:PINTU
1 | import os |
运行结果:
1 | D:\CollegeStudy\Python_code\venv\Scripts\python.exe D:/CTF_Tools/CTF_Scripts/MISC/PINTU.py |
得到一张png图片
使用npiet工具来运行这个花不拉几的语言图片程序得到flag
flag{4b6c1737-27e5-41c4-95e3-f70ad196063e}
piet编程语言:面向堆栈的语言,颜色区域表示数字,
EXP2:逆序图片
1 | # coding:utf-8 |
EXP3:GIF拆解拼接
1 | # coding:utf-8 |
创建大图,将每一帧图片贴上去,im是创建好的大图,然后使用im.paste(image,(width,0,2+width,600))
方法,4元坐标,高度不变,宽度每次加2(每一帧的宽度)
1 | # coding:utf-8 |
PWN
move
栈迁移的知识,没看懂什么原理
1 | #!/usr/bin/env python3 |
pwthon
通过测试找到触发漏洞的PoC:
1 | sh = remote(attach_host, 9541) |
根据Poc编写利用脚本:
1 | #!/usr/bin/env python3 |
- Title: 2023香山杯复现与学习[231016]
- Author: Juana_2u
- Created at : 2023-10-18 20:02:45
- Updated at : 2023-11-09 20:04:43
- Link: https://juana-2u.github.io/2023/10/18/2023XiangShan-Replay/
- License: This work is licensed under CC BY-NC-SA 4.0.