ISCC2024个人挑战赛WP-MISC

news2024/11/16 1:33:52
(非官方解,以下内容均互联网收集的信息和个人思路,仅供学习参考) 

where is flag

下载附件,解压出pyc,然后到下面网址反编译

python反编译 - 在线工具

记住c,是密文,

Key是 k5fgb2eur5styn0lve3t6r1s

AES ecb解密

解密网址:https://www.lddgo.net/encrypt/aes

成语学习

压缩包密码:57pmYyWt

解压后把解压出的文件改后缀为.zip,再次解压,O7avZhikgKgbF下有个flag.txt,去https://www.mklab.cn/utils/hmac解密,成语是明文,密钥是食物

Hash包上ISCC{}

钢铁侠在解密

解题思路

把图片放进工具,可以提取c1 c2

然后生成文件

打开小字条可以ne

然后写脚本

def HGCD(a, b):

    if 2 * b.degree() <= a.degree() or a.degree() == 1:

        return 1, 0, 0, 1

    m = a.degree() // 2

    a_top, a_bot = a.quo_rem(x ^ m)

    b_top, b_bot = b.quo_rem(x ^ m)

    R00, R01, R10, R11 = HGCD(a_top, b_top)

    c = R00 * a + R01 * b

    d = R10 * a + R11 * b

    q, e = c.quo_rem(d)

    d_top, d_bot = d.quo_rem(x ^ (m // 2))

    e_top, e_bot = e.quo_rem(x ^ (m // 2))

    S00, S01, S10, S11 = HGCD(d_top, e_top)

    RET00 = S01 * R00 + (S00 - q * S01) * R10

    RET01 = S01 * R01 + (S00 - q * S01) * R11

    RET10 = S11 * R00 + (S10 - q * S11) * R10

    RET11 = S11 * R01 + (S10 - q * S11) * R11

    return RET00, RET01, RET10, RET11

def GCD(a, b):

    print(a.degree(), b.degree())

    q, r = a.quo_rem(b)

    if r == 0:

        return b

    R00, R01, R10, R11 = HGCD(a, b)

    c = R00 * a + R01 * b

    d = R10 * a + R11 * b

    if d == 0:

        return c.monic()

    q, r = c.quo_rem(d)

    if r == 0:

        return d

    return GCD(d, r)

#填入你的

c1 = 772167432990792284909246503485373564827423662851242942936975255372049079405922631297290251556585973686934890832849659590583140085382968742093943770675428869862385498404594511153139222640717296752471214514504131745657446656125557844901271640715066516885103781839826160994115784487472680768100661183394705879985459364111608990579323275737784566381691336604304955278256883423529263632439800163659992975948190325138106290810250677692972270138775860224366956601449524284187574453201455615890650328671385208998671350863314115885591106853229807982994778140445245927435098328511597441847163210560193373848931171804024813203

c2 = 2185342810520022586336689385344512546273762827830100178019097650928259687501314269853262487551357398728297194586835620643774892721766418892806910363445011749061907166747343507608781390978770926747094305381146737393535026687526960319434536017583904894554530861557175239362345485251281115748843999781275445445703433894295561819134209833028751302490721592934170848146618432688497403964700464690490125298139227095348433433890543904289070662974904820444031627359763396201976863505823922710618734646465997511025062911757600571747673908775617096321384264403844217607622754902280707445209499295488447523319414362500287112323

N=14333611673783142269533986072221892120042043537656734360856590164188122242725003914350459078347531255332508629469837960098772139271345723909824739672964835254762978904635416440402619070985645389389404927628520300563003721921925991789638218429597072053352316704656855913499811263742752562137683270151792361591681078161140269916896950693743947015425843446590958629225545563635366985228666863861856912727775048741305004192164068930881720463095045582233773945480224557678337152700769274051268380831948998464841302024749660091030851843867128275500525355379659601067910067304244120384025022313676471378733553918638120029697

e = 52595

pad1 = 1769169763

pad2 = 1735356260

PR.<x>=PolynomialRing(Zmod(N))

g1 = (x*2^32+pad1)^e - c1

g2 = (x*2^32+pad2)^e - c2

X=584734024210292804199275855856518183354184330877

print(g1(X),g2(X))

res = GCD(g1,g2)

m = -res.monic().coefficients()[0]

print(m)

print(bytes.fromhex(hex(m)[2:]).decode().replace("flag{",'ISCC{'))

需要去docker pull一个sagemath环境,然后去sage运行

最后获取flag ISCC{} 

工业互联网模拟仿真数据分析

第一问

在某些网络会话中,数据包可能保持固定大小,请给出含有此确定性特征的会话IP地址和数据包字节大小值。

答案:IP地址:XX.XX.XX.XX,XX.XX.XX.XX,…,数值:XX

补充说明:IP顺序从小到大排列,涉及的IP个数由选手自己判断

只有192.168.1.2

192.168.1.4的Length大小不变

192.168.1.2,192.168.1.4,24

第二问

题目二:通信包数据某些字段可能为确定的,请给出确定字节数值。

tshark -r a.pcap -T fields -e data.data -Y "data.len==12"                                                

2024f7b039ae1f546c8e8b1b                                                                                                                                                                                       

2024b939b6fdd3a92dacee64                                                                                                                                                                                       

2024fd300d3fd17b85d1ae51                                                                                                                                                                                       

20249cf615176e00d3fde264                                                                                                                                                                                       

20247b5207a1d2b639fe1e55                                                                                                                                                                                       

202432b3b42ff36424a15d01                                                                                                                                                                                       

2024f2122ad847094be81d58                                                                                                                                                                                       

2024e866d7ec7b7d5ae618bf                                                                                                                                                                                       

20244057c7e66ca371b2c938                                                                                                                                                                                       

202433b4fba38bac7e29bc6a                                                                                                                                                                                       

2024796986cd9b1fc559ad61                                                                                                                                                                                       

20248c6b6efd392e9839a3eb                                                                                                                                                                                       

202462434670e7e76d766c58                                                                                                                                                                                       

20241cc66ab532ff8c8f1d2e

很明显就是前面的2024

第三问

一些网络通信业务在时间序列上有确定性规律,请提供涉及的IP地址及时间规律数值(小数点后两位)

答案:IP地址:XX.XX.XX.XX,XX.XX.XX.XX,…,数值:XX

看文末的流量分组

第五组 - 192.168.1.3    192.168.1.5, 这一组的时间间隔固定

192.168.1.3,192.168.1.5,0.06

第四问

一些网络通信业务存在逻辑关联性,请提供涉及的IP地址

答案:XX.XX.XX.XX,XX.XX.XX.XX,…

看文末的流量分组,就能看出这三个IP是有业务关联性的

192.168.1.3 --> 192.168.1.2 --> 192.168.1.6
192.168.1.2,192.168.1.3,192.168.1.6

第五问

网络数据包往往会添加数据完整性校验值,请分析出数据校验算法名称及校验值在数据包的起始位和结束位(倒数位)

答案:XXXXX,X,X

五个字符的校验算法,先假设是 CRC16 或者 CRC32 

倒数位必为1

尝试CRC16 CRC32并尝试0-10为起始位

为CRC16,4,1时成功提交

192.168.1.2,192.168.1.4,24

2024

192.168.1.3,192.168.1.5,0.06

192.168.1.2,192.168.1.3,192.168.1.6

CRC16,4,1

ISCC{192.168.1.2,192.168.1.4,24,2024,192.168.1.3,192.168.1.5,0.06,192.168.1.2,192.168.1.3,192.168.1.6,CRC16,4,1}

ISCC{192.168.1.2,192.168.1.4,24,2024,192.168.1.3,192.168.1.5,0.06,192.168.1.2,192.168.1.3,192.168.1.6,CRC16,4,1}

FunZip

nwalk分离文件,发现有个sheet1.xml

打开看看发现

有表格像素的标签,且有不一致的地方 想到可能存在二维码

脚本跑

import openpyxl

from PIL import Image

def extract_bold_cells(file_path):

    bold_cells = []

    wb = openpyxl.load_workbook(file_path)

    sheet = wb.active

    for row in sheet.iter_rows():

        for cell in row:

            if cell.font.bold:

                bold_cells.append((cell.column, cell.row))

    return bold_cells

def generate_image(bold_cells):

    max_x = max(cell[0] for cell in bold_cells)

    max_y = max(cell[1] for cell in bold_cells)

    img = Image.new("1", (max_x, max_y), color=1)  # 生成白色的图像

    pixels = img.load()

    for cell in bold_cells:

        x, y = cell[0] - 1, cell[1] - 1  # Excel中的列和行是从1开始的,而图像的像素是从0开始的

        pixels[x, y] = 0  # 将加粗单元格对应的像素点设置为黑色

    return img

if __name__ == "__main__":

    excel_file_path = "attachment-1.xlsx"

    bold_cells = extract_bold_cells(excel_file_path)

    img = generate_image(bold_cells)

    img.show()  # 显示图像

    img.save("generated_imag.png")  # 保存图像

    print("Image generated successfully!")

时间刺客

1.得到流量为usb

放入kali,进行数据提取

tshark -r 6.pcap(修改为你的文件名字) -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

  1. 分离出来发现没有带冒号,用以下脚本加上冒号

f=open('usbdata.txt','r')

fi=open('out1.txt','w')

while 1:

    a=f.readline().strip()

    if a:

        if len(a)==16: # 鼠标流量的话len改为8

            out=''

            for i in range(0,len(a),2):

                if i+2 != len(a):

                    out+=a[i]+a[i+1]+":"

                else:

                    out+=a[i]+a[i+1]

            fi.write(out)

            fi.write('\n')

    else:

        break

fi.close()

  1. 再使用以下脚本对加上冒号的usb'数据进行提取

#最后用脚本提取

   # print((line[6:8])) #输出6到8之间的值

   #取出6到8之间的值

mappings = { 0x04:"A",  0x05:"B",  0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G",  0x0B:"H", 0x0C:"I",  0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O",  0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5",  0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]",  0X2B:"    ", 0x2C:" ",  0x2D:"-", 0x2E:"=", 0x2F:"[",  0x30:"]",  0x31:"\\", 0x32:"~", 0x33:";",  0x34:"'", 0x36:",",  0x37:"." }

nums = []

keys = open('out1.txt')

for line in keys:

    if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':

         continue

    nums.append(int(line[6:8],16))

keys.close()

output = ""

for n in nums:

    if n == 0 :

        continue

    if n in mappings:

        output += mappings[n]

    else:

        output += '[unknown]'

print(output)

运行得到

FLAGPR3550NWARDSA2FEE6E0 

压缩密码为:PR3550NWARDSA2FEE6E0

  1. 解压之后得到空白txt,发现是时间戳隐写,直接用以下脚本进行提取

(记得把脚本和解压的放在同一目录下),跑出来加上ISCC得到flag

import os

un_time=1728864000.0

for i in range(18):

    filename = ".{}.txt".format(i)

    file_attr = os.stat(filename)#读取文件属性

    dtime = str(file_attr.st_mtime)#获取创建时间

    print(chr(int(float(dtime)-un_time)),end='')

有人让我给你带个话

打开附件得到两个文件,用010打开png文件,直接查看png文件尾

发现文件尾后还藏了文件

使用binwalk分离文件

得到名字为lyra的png

搜索后得知lyra是一种语音的隐写

010打开无后缀文件发现符合lyra文件特征

给文件加上后缀

使用bazel对文件进行低频3200HZ采样

得到wav文件,打开后发现是念社会主义核心价值观的语音

语音转文字后解码,得到flag

精装四合一

四个图片中每个图片的文件尾部都带着一串数据,我们看到这些数据都异或 0xff 都会是一个 zip 文件的一
部分,那么写个脚本将这四个文件的文件尾提取出来再进行异或 0xff ,然后再拼接,会得到一个 zip ,脚
本如下
def trim_and_xor_with_ff ( input_filename , output_filename , target_hex ):
# 16 进制字符串转换为字节
target_bytes = bytes . fromhex ( target_hex . replace ( ' ' , '' ))
# 初始化一个标志位,表示是否已经找到目标字节序列
found_target = False
with open ( input_filename , 'rb' ) as infile , open ( output_filename , 'wb' ) as
outfile :
# 读取文件的字节
while True :
chunk = infile . read ( 4096 ) # 一次读取 4096 字节
if not chunk :
break # 如果文件读取完毕,则退出循环
# 检查目标字节序列是否在块中
index = chunk . find ( target_bytes )
if index ! = - 1 :
# 如果找到,则只处理目标字节序列之后的部分
if not found_target :
# 跳过包含目标字节序列的块中目标之前的部分
chunk = chunk [ index + len ( target_bytes ):]
found_target = True
# 对剩余部分进行异或操作
xor_chunk = bytes ([ b ^ 0xFF for b in chunk ])
outfile . write ( xor_chunk )
elif found_target :
# 如果已经找到目标字节序列,则直接对整个块进行异或操作
xor_chunk = bytes ([ b ^ 0xFF for b in chunk ])
outfile . write ( xor_chunk )
# 如果尚未找到目标字节序列,则不处理该块(因为我们只关心目标之后的数据)
# 使用函数
input_filename = 'left_hand_invert.png' # 输入文件名
output_filename = '2' # 输出文件名
target_hex = 'AE426082' # 要查找的 16 进制字符串
trim_and_xor_with_ff ( input_filename , output_filename , target_hex )
input_filename = 'left_foot_invert.png' # 输入文件名
output_filename = '1' # 输出文件名
trim_and_xor_with_ff ( input_filename , output_filename , target_hex )
input_filename = 'right_hand_invert.png' # 输入文件名
output_filename = '4' # 输出文件名
trim_and_xor_with_ff ( input_filename , output_filename , target_hex )
input_filename = 'right_foot_invert.png' # 输入文件名
output_filename = '3' # 输出文件名
trim_and_xor_with_ff ( input_filename , output_filename , target_hex ) # 文件拼接
f1 = open ( '1' , 'rb' )
f2 = open ( '2' , 'rb' )
f3 = open ( '3' , 'rb' )
f4 = open ( '4' , 'rb' )
f5 = open ( '1.zip' , 'wb' )
for i in range ( 3176 ):
f5 . write ( f1 . read ( 1 ))
f5 . write ( f2 . read ( 1 ))
f5 . write ( f3 . read ( 1 ))
f5 . write ( f4 . read ( 1 ))
f5 . write ( f1 . read ( 1 ))
得到的 zip 文件,进行爆破密码是 65537 ,这个是 e 值,然后解压出一个 word 文件,把图片挪走看到一串
数字,这一串就是 n 的值
然后将 word 后缀改为 zip ,在 word/media 目录下面看到 true flag 图片,这个是密文,转成 16 进制是
0x209A2CA83B36F602B2D39D3A6818A78884288F24FE0BC1CD679FF0E630EEE12B
然后 n 值在线网站分解为 p q
根据 p q e c 可以求 rsa 了,脚本如下
import gmpy2
from Crypto . Util . number import *
from binascii import a2b_hex , b2a_hex
import binascii
e = 65537
c = 0x209A2CA83B36F602B2D39D3A6818A78884288F24FE0BC1CD679FF0E630EEE12B
#1. n 分解为 p q
p = 100882503720822822072470797230485840381
q = 167722355418488286110758738271573756671
n = p * q
phi = ( p - 1 ) * ( q - 1 )
#2. d
d = gmpy2 . invert ( e , phi )
#3.m=pow(c,d,n)
m = gmpy2 . powmod ( c , d , n )
print ( long_to_bytes ( m )) 得到 flag

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【QNX】Qnx IPC通信 Message-passing

Qnx IPC通信 Message-passing Message-passing介绍 QNX提供了多种IPC(Interprocess Communication )通信方式&#xff0c;包括Message-passing、Plus&#xff08;脉冲&#xff09;、Event、Signal、共享内存、Pipe&#xff0c;当然还有socket。 Message-passing是Qnx IPC的主…

远大阀门集团携创新产品亮相南京,展现石化行业新风采

2024年5月22日&#xff0c;备受瞩目的第八届中国石油和化工行业采购大会在江苏省南京市盛大开幕。作为石化行业物资采购领域极具影响力的年度盛会&#xff0c;本次大会吸引了众多国内外能源化工企业、化工新材料企业、工程公司以及相关领域的供应商参加。远大阀门集团作为特邀优…

【网络安全】Fortinet FortiSIEM 中存在严重未经身份验证的 RCE 漏洞:已发布 PoC

文章目录 什么是Fortinet Forti SIEMFortinet Advisor — FortiSIEM 内置生成式 AI 优势功能下一代 SOC 自动化通过链路分析实现可视化威胁猎捕 RCE 漏洞和 PoC如何降低影响推荐阅读 针对 Fortinet FortiSIEM 中一个严重的未经身份验证的远程代码执行漏洞&#xff08;CVE-2023-…

NVIDIA Orin/Jetson 平台+数字同轴GMSL 车载AI视觉方案,应用于车载,机器人等领域

专注于成像和视觉技术于近期正式发布了可适配NVIDIA DRIVE AGX Orin平台的一系列摄像头产品&#xff0c;该产品是自主开发的数字同轴GMSL2摄像头模组&#xff0c;可满足智能汽车的高质量成像需求。 目前&#xff0c;推出可适配于NVIDIA DRIVE AGX Orin平台的摄像头产品一共有11…

ubuntu安装Stable Video Diffusion(SVD)让图片动起来

目录 写在前面 一、克隆或下载项目 二、下载预训练模型 三、创建环境 四、安装依赖 五、启动项目 六、解决报错 1.预训练模型下不来 2.TiffWriter.write() got an unexpected keyword argument fps 3.安装ffmpeg 4.No module named scripts 七、测试 写在前面 Stab…

华为机考入门python3--(30)牛客30-字符串合并处理

分类&#xff1a;字符串、进制转换 知识点&#xff1a; 获取偶数下标的字符 even_chars my_str[::2] 获取奇数下标的字符 odd_chars my_str[1::2]) 翻转字符串 reversed_str my_str[::-1] 二进制转十进制 num int(reversed_binary, 2) 十进制转十六进制 …

JWT的生成

引依赖 生成JWT JWT校验 注意

Kubernetes(k8s) v1.30.1 本地集群部署 安装metallb 支持LoadBalancer 生产环境 推荐 BGP模式部署

1 metallb 安装参考:Kubernetes(k8s) v1.30.1 本地集群部署 默认不支持LoadBalancer metallb来解决-CSDN博客 2 删除 Layer 2 模式 配置 kubectl delete -f IPAddressPool.yaml kubectl delete -f L2Advertisement.yaml kubectl delete -f discuz-srv.yaml 3 配置 k8s Metal…

IDEA 2024.1安装与破解

一、下载 官网地址&#xff1a;https://www.jetbrains.com/idea/download/other.html 二、安装 傻瓜式安装即可 三、破解 3.1 破解程序 网站&#xff1a;https://3.jetbra.in/ 3.2 获取激活码 点击*号部分即可复制成功

【机器学习】——线性模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

typescript 配置精讲 | moduleResolution

大家好&#xff0c;我是17。 moduleResolution 是 typescript 模块配置中最重要的一个配置&#xff0c;所以 17 单拿出来讲一下。如果你去看文档还是挺复杂的&#xff0c;但如果不去深究细节&#xff0c;只想知道如何配置还是很简单的。3 分钟就能学会。 moduleResolution 的…

neo4j开放远程连接

注&#xff1a;本博客所用neo4j版本为社区5.12版 第一步&#xff1a;修改neo4j配置文件 首先找到neo4j的安装位置&#xff0c;点击进入conf文件夹&#xff0c;随后点击neo4j.conf文件&#xff0c;在“Network connector configuration”下面的单元中找到server.default_liste…

奥枫软件Java要个16K遇到地狱级难度,醉了。。。

我只能说地狱难度&#xff0c;没绝对把握就别去了。我凭借前辈的经验&#xff0c;和当时天时地利人和&#xff0c;六道题答得很不错&#xff0c;但还是没通过。我有备而来都没过&#xff0c;现场写那些应该都是白忙活了。 一面 1&#xff0c;分割一个整数。如123&#xff0c;结…

贪心-AcWing 125. 耍杂技的牛-XMUOJ蒙德冒险者的游戏

题目 思路 每头牛的危险值 他前面牛的w(重量值)之和 - 自身的s(强壮值) 要使每头牛的危险值最小&#xff0c;根据贪心思想&#xff1a; 自身w值越大应该放到底部&#xff08;即减小上述式中的被减数&#xff09; 自身s值越大应该放到底部&#xff08;即增大上述式中的减数&…

KingbaseES数据库union的用法

数据库版本&#xff1a;KingbaseES V008R006C008B0014 文章目录如下 1. union的概念 2. union的语法 3. union的用法 3.1. 去重&#xff08;union&#xff09; 3.2. 不去重&#xff08;union all&#xff09; 3.3. 聚合运算 3.4. 异常案例 1. union的概念 UNION 是结构…

ClickHouse架构概览 —— Clickhouse 架构篇(一)

文章目录 前言Clickhouse 架构简介Clickhouse 的核心抽象列和字段数据类型块表 Clickhouse 的运作过程数据插入过程数据查询过程数据更新和删除过程 前言 本文介绍了ClickHouse的整体架构&#xff0c;并对ClickHouse中的一些重要的抽象对象进行了分析。然后此基础上&#xff0…

揭秘OS模块:文件与文件夹的遍历艺术

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、os.listdir()&#xff1a;当前目录的扫描者 三、os.walk()&#xff1a;文件系…

深度学习——自己的训练集——训练模型(CNN)

训练模型 1.导入必要的库2.加载类别名称3.创建标签映射字典4.加载图像数据和对应的标签5.构建和编译CNN模型6.训练模型7.保存训练好的模型 1.导入必要的库 导入处理数据和训练模型时需要的库 os: 这个模块提供了与操作系统交互的功能&#xff0c;比如文件和目录操作。 cv2: 这…

如何选择优质的气膜体育馆工程服务商—轻空间

随着现代生活的便利化和时代感的增强&#xff0c;气膜体育馆成为越来越多人的选择。这种美观实用的建筑在学校、社区和体育中心等地广泛应用。许多投资者和客户都有意建造气膜体育馆&#xff0c;但在选择工程服务商时&#xff0c;往往面临困惑。以下几点将帮助您做出明智的选择…

grafana大盘展示node_expod节点

node_expod添加lables标签 Prometheus查询 语句查询 node_exporter_build_infografna添加变量查询 正常有值 切换其他的是有值的 我的报错原因 因为有多个数据源,我选择错了,因为修改的lable标签是其他数据源,所以获取不到 查询语句 我的变量是 $app node_filesyste…