当前位置: 首页 > news >正文

全程Kali linux---CTFshow misc入门(38-50)

第三十八题:

ctfshow{48b722b570c603ef58cc0b83bbf7680d}

第三十九题:

37换成1,36换成0,就得到长度为287的二进制字符串,因为不能被8整除所以,考虑每7位转换一个字符,得到flag。

ctfshow{52812ff995fb7be268d963a9ebca0459}

第四十题:

#提取出特定部分并转换为对应的 ASCII 字符,最后将这些字符拼接成一个字符串

flag=""
for i in range(28,69): #flag内容从28位开始
    f = open('apngframe'+str(i)+'.txt')
    s = f.read()
    flag += chr(int(s.split("/")[0][6:]))
print(flag)

ctfshow{95ca0297dff0f6b1bdaca394a6fcb95b}

第四十一题:

搜索f001,查看他们摆成的样子。

ctfshow{fcbd427caf4a52f1147ab44346cd1cdd}

第四十二题:

用010editor打开,发现有48个IDAT块,结合提示flag长度为41,很有可能有关联,经过观察从这里开始,将其转换为字符acsll字符,正好是ctfshow......

ctfshow{078cbd0f9c8d3f2158e70529f8913c65}

第四十三题(须win系统):

使用tweakpng查看,弹出了很多这样的错误窗口,看样子是crc有问题,我们使用png-debugger-master工具来看一下,把所有错误的crc收集起来,转换成字符串,得到flag。

ctfshow{6eb2589ffff5e390fe6b87504dbc0892}

第四十四题(须win系统):

 PNGDebugger打开,把信息导入到txt文件中

D:\1aCTF-Misc\png-debugger-master\Debug> pngdebugger ../misc44.png >1.txt

利用脚本把OK的替换成1,FAILED替换成0,即可得到flag。

import re
import binascii

s = open("1.txt", "r").read()
data_s = re.findall(r'\(1152\).*?CRC ([FAILED,OK!]+)', s,
                    re.DOTALL)  # 匹配(1152)所在的段,直到结尾为FAILED或者OK!结束,在默认情况下.的作用是匹配除了换行符以外的所有字符,这里的re.DOTALL的作用是可以将. 匹配所有换行符
print(data_s)
flag = ""
for i in data_s:
    if i == 'OK!':
        flag += '1'
    else:
        flag += '0'

print(flag)
print(len(flag))
for i in range(43):
    print(chr(int(flag[8*i:8*(i+1)],2)),end="")

 

ctfshow{cc1af32bf96308fc1263231be783f69e}

第四十五题:

使用在线转换格式的网站对png转换成bmp后,使用binwalk工具可以查看到有隐藏内容,-e对其进行分离即可得到flag。

ctfshow{057a722a5587979c34966c2436283e70}

第四十六题:

扶乩:术士制丁字形木架,其直端顶部悬锥下垂。架放在沙盘上,由两人各以食指分扶横木两端,依法请神,木架的下垂部分即在沙上画成文字,作为神的启示,或与人唱和,或示人吉凶,或与人处方。

根据题的提示,应该是让我们通过identify查看它的偏移量,提取它每次偏移的值当做坐标,再作图

┌──(ln㉿kali)-[~/ctf]
└─$ identify misc46.gif > 1.txt

import re
import matplotlib.pyplot as plt
from PIL import Image

f = open("1.txt", "r")
s = f.read()
#  正则表达式寻找偏移量
data_s = re.findall(r'GIF .*?\+(\d+)\+(\d+)', s, re.DOTALL)
#  将data_s里的坐标从str类型转换成int类型,不然后面的坐标不能识别
data_s = [[int(i) for i in j] for j in data_s]

#  创建一个新的RGB图像,大小为400*70的像素,背景颜色为白色(RGB的值为(255,255,255))
img = Image.new('RGB', (400, 100), (255, 255, 255))
#  创建一个新的RGB图像,大小为1*1的像素,背景颜色为黑色(RGB的值为(0,0,0))
new = Image.new('RGB', (1, 1), (0, 0, 0))

#  循环每次的坐标
for i in data_s:
    #  将new(黑色像素点)粘贴到img(白色像素点)上,相当于填充
    img.paste(new, i)

#  显示img图像
plt.imshow(img)
#  显示窗口以查看图像
plt.show()
 

ctfshow{05906b3be8742a13a93898186bc5802f}

第四十七题:

apng的文件结构是每一个IDAT块前面都会有一个fcTL块,它其中就包含水平垂直偏移量。

# 第一阶段:读取偏移
with open(r'.\misc47.png', 'rb') as f:
    bin_data = f.read()

point_list = []
for i in range(0, len(bin_data)):
    #print(hex(bin_data[i]))
    # union CTYPE type 中偏移固定位置在66 63 54 4C 后的 16 17 18 19 20 21 22 23 位
    # 先找到66 63 54 4C ,再根据固定的偏移找到uint32 x_offset 16 17 18 19 和uint32 y_offset 20 21 22 23
    if i+3<=len(bin_data) and hex(bin_data[i])=='0x66' and hex(bin_data[i+1])=='0x63' and hex(bin_data[i+2])=='0x54' and hex(bin_data[i+3])=='0x4c':
        # 两字节转为十进制,赌他不会用到三字节
        # 高位字节存在前,低位字节存在后,小端字节序
        l = int((bin_data[i+18] << 8) | bin_data[i+19])
        r = int((bin_data[i+22] << 8) | bin_data[i+23])
        point_list.append((l,r))

# 第二阶段:通过偏移画图
from PIL import Image
import matplotlib.pyplot as plt

img = Image.new('RGB',(400,70),(255,255,255))
for i in point_list:
    new = Image.new('RGB',(1,1),(0,0,0))
    img.paste(new,i)
plt.imshow(img)
plt.show()

ctfshow{6d51f85b45a0061754a2776a32cf26c4} 

第五十题:

使用StegSolve工具,在终端使用命令调用 java -jar StegSolve-1.5-alpha1.jar

ctfshow{84470883ee1eec2e886436461bf79111}

http://www.lryc.cn/news/533447.html

相关文章:

  • HarmonyOS:时间日期国际化
  • 使用miniforge代替miniconda
  • LIMO:少即是多的推理
  • 【玩转 Postman 接口测试与开发2_018】第14章:利用 Postman 初探 API 安全测试
  • 如何编写测试用例
  • 复原IP地址(力扣93)
  • zzcms接口index.php id参数存在SQL注入漏洞
  • Redis03 - 高可用
  • 系统URL整合系列视频四(需求介绍补充)
  • 激活函数篇 03 —— ReLU、LeakyReLU、ELU
  • 山东大学软件学院人机交互期末复习笔记
  • python 语音识别方案对比
  • docker常用命令及案例
  • DeepSeek-R1 云环境搭建部署流程
  • Java_双列集合
  • .net的一些知识点6
  • 无须付费,安装即是完全版!
  • 常见数据库对象与视图VIEW
  • 【Vue2】vue2项目中如何使用mavon-editor编辑器,数据如何回显到网页,如何回显到编辑器二次编辑
  • 2、Python面试题解析:如何进行字符串插值?
  • 计算机网络-SSH基本原理
  • doris:MySQL 兼容性
  • mysql 存储过程和自定义函数 详解
  • C++ 中的 cJSON 解析库:用法、实现及递归解析算法与内存高效管理
  • websocket自动重连封装
  • 【C语言】球球大作战游戏
  • 人工智能D* Lite 算法-动态障碍物处理、多步预测和启发式函数优化
  • MySQL 8版本认证问题
  • Android 开发APP中参数配置与读取总结
  • Scala 语法入门