BMZCTF MISC(二)

SDNISC2020_RSA

下载附件,为一个文本文件。其内容为
在这里插入图片描述

可以得知:n,c1,e1,c2,e2。为典型的RSA的共模攻击。
使用脚本:

n = 0xa1d4d377001f1b8d5b2740514ce699b49dc8a02f12df9a960e80e2a6ee13b7a97d9f508721e3dd7a6842c24ab25ab87d1132358de7c6c4cee3fb3ec9b7fd873626bd0251d16912de1f0f1a2bba52b082339113ad1a262121db31db9ee1bf9f26023182acce8f84612bfeb075803cf610f27b7b16147f7d29cc3fd463df7ea31ca860d59aae5506479c76206603de54044e7b778e21082c4c4da795d39dc2b9c0589e577a773133c89fa8e3a4bd047b8e7d6da0d9a0d8a3c1a3607ce983deb350e1c649725cccb0e9d756fc3107dd4352aa18c45a65bab7772a4c5aef7020a1e67e6085cc125d9fc042d96489a08d885f448ece8f7f254067dfff0c4e72a63557

e1 = 0xf4c1158f

c1 = 12051796366524088489284445109295502686341498426965277230069915294159131976231473789977279364263965099422235647723775278060569378071469131866368399394772898224166518089593340803913798327451963589996734323497943301819051718709807518655868569656941242449109980876397661605271517459716669684900920279597477446629607627693769738733623143693170696779851882404994923673483971528314806130892416509854017091137325195201225617407959645788145876202882024723106204183257094755002924708009138560347432552090905489132135154932987521239299578509008290614398700799670928805692609756924823628055245227290288940649158862576448537833423

e2 = 0xf493f7d1

c2 = 16648382384980770705624348910895797622774711113202207693584907182552301186239613809347201161450012615995859738410661452438496756353485538305614949211776668793864984429696790944750894691957799234264508530084026894611228513698963347402329109838109621609770406925700520983387811451074838470370044678634099202003480925903267508744006195455234025325060817223813858985074720872124168142943926467694676717713503559007112874381750005406371400109962943508349497151148446064846096531445037416174913915923050332242843403926133165817310272633884358263778516770288515592959832151762499526363131801945163501999337808208074381212795

import  gmpy2
import  binascii
import  rsa
import math
from Crypto.Util import number
def exgcd(m, n, x, y):
    if n == 0:
        x = 1
        y = 0
        return (m, x, y)
    a1 = b = 1
    a = b1 = 0
    c = m
    d = n
    q = int(c / d)
    r = c % d
    while r:
        c = d
        d = r
        t = a1
        a1 = a
        a = t - q * a
        t = b1
        b1 = b
        b = t - q * b
        q = int(c / d)
        r = c % d
    x = a
    y = b
    return (d, x, y)
ans=exgcd(e1,e2,0,0)
s1=ans[1]
s2=ans[2]
m=(gmpy2.powmod(c1,s1,n)*gmpy2.powmod(c2,s2,n))%n
print(number.long_to_bytes(m))

可以解出flag: flag{8c16c91be3f3287ff5a10167e922b33b}

网鼎杯 2018 clip

下载附件,是一个disk文件。首先想到的是虚拟磁盘文件,用“DiskGenius”加载,发现没有什么信息。
用010editor打开。发现有PNG、IDAT和IHDR。可以判断为PNG文件。
手工将文件导出。共两个PNG文件。第一个文件文件头缺少第一个字节,补齐后就可以打开。
在这里插入图片描述

打开后文件模糊。
在这里插入图片描述

在这里插入图片描述

用photoshop进行拼接:
在这里插入图片描述

发现是一串两个重复的flag。(水平有限,但已经可以看出flag了。)
flag{0b008070-eb72-4b99-abed-092075d72a40}

SDNISC2020_简单js

下载附件,是一个JS文件。内容如下:

/**
 * Pseudo md5 hash function
 * @param {string} string
 * @param {string} method The function method, can be 'ENCRYPT' or 'DECRYPT'
 * @return {string}
 */
function pseudoHash(string, method) {
  // Default method is encryption
  if (!('ENCRYPT' == method || 'DECRYPT' == method)) {
    method = 'ENCRYPT';
  }
  // Run algorithm with the right method
  if ('ENCRYPT' == method) {
    // Variable for output string
    var output = '';
    // Algorithm to encrypt
    for (var x = 0, y = string.length, charCode, hexCode; x < y; ++x) {
      charCode = string.charCodeAt(x);
      if (128 > charCode) {
        charCode += 128;
      } else if (127 < charCode) {
        charCode -= 128;
      }
      charCode = 255 - charCode;
      hexCode = charCode.toString(16);
      if (2 > hexCode.length) {
        hexCode = '0' + hexCode;
      }
      
      output += hexCode;
      
    }
    // Return output

    return output;
  } else if ('DECRYPT' == method) {
    // DECODE MISS
    // Return ASCII value of character
    return string;
  }
}
document.getElementById('password').value = pseudoHash('19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02', 'DECRYPT');

是一个加密的代码。我们需要进行解密。
加密过程如下:
1、将字符串转为ASCII码,如果ASCII码大于128,则减去128,如果小于128,则加上128。然后再用255减去其值,以保证是可显字符,最后输出偶数位的16进制值。
知道加密方法了,我们写python脚本,进行解密:

s='19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02'
len_s=int(len(s))

for i in range(0,int(len_s/2)):
    tmp = s[2*i:2*i+2]
    tmp = '0x'+tmp
    tmp = int(tmp,16)
    tmp = 255-tmp
    if (tmp<128):
        tmp = tmp+128
    else:
        tmp = tmp -128
    tmp = chr(tmp)
print (tmp,end='')

得到flag:flag{db38fbff0f67e7eb3c9d274fd180a4b3}

SDNISC2020_简单数据包

下载附件,为一个流量包。
但无法用wireshark打开。我们用010editor打开,发现文件头没有了。
搜索flag,没有结果。搜索PK,在文件的尾部发现一个压缩包:
在这里插入图片描述

同时在压缩包上面发一了一串base64加密后的字符串:ZmxhZ3tzZG5pc2NfbmV0X3NRMlgzUTl4fQ==
解码后为:flag{sdnisc_net_sQ2X3Q9x}

SDNISC2020_过去和现在

下载附件,为一个压缩包,打开后是一张图片。
在这里插入图片描述

用010editor打开,没发现什么有用信息。
用binwalk分离出4个文件。
在这里插入图片描述

打开21154,即可看到flag:flag{fc25cbb7b85959fe03738241a96bf23d}

网鼎杯 2018 minified

下载附件,为一个压缩包,打开后是一张图片。
在这里插入图片描述

用010editor打开,没有什么发现。
用Stegsolve打开,分离出alpha的0通道、red的0通道、green的0通道和blue的0通道。两两相互异或,最后发现alpha的0通道与green的0通道异或,就能看到flag:
在这里插入图片描述

flag{7bb6db9f-d2eb-4e69-8dee-0002ce1e07f9}

[2020首届祥云杯]进制反转

下载附件,为一个压缩包,打开后报错,
在这里插入图片描述

怀疑为伪加密,用010editor打开。找到加密标识位,进行修改,将1改为0:
在这里插入图片描述

即可正常打开rar压缩包。
解压出flag.wav
用010editor打开,无发现
用AudacityPortable导入原始数据。
听不出来是什么哥哥,想到题目是进制反转,将音频时间反转:
在这里插入图片描述

勉强可以听出是首歌,减慢播放速度,再听歌识曲,可以知道歌名为:《Too Good At Goodbyes》
flag:BMZCTF{TOOGOODATGOODBYES}
(题目只提示了大写,没写还要去掉空格。。。。)

[2020首届祥云杯]到点了

下载附件为一个压缩包,里面是3个word文档
打开第一个文档:
在这里插入图片描述

内容为一句话和一张图片。
用wps(office太贵)显示隐藏的文字:
在这里插入图片描述
在这里插入图片描述

看到多出一句话。
查看文档属性:
在这里插入图片描述

看以只有修改时间可以拼成8位,尝试使用20201024作为密码打开第二个文档:
看到其内容为:
在这里插入图片描述

按下crtl+A,可以看到图片下面多出一条。修改字体颜色:
看到多出的字符串:AABBAABBBAABBBAAAABBABBABABAAAAABBAAABBBBAABBBAABABABBAAABAAAABAABAABBABAAAAABAA
由A、B组成。推算为培根加密,打开https://tool.bugku.com/peigen/,并解密。
在这里插入图片描述

得到两个字符串:
GOODNIGHTSWEETIE
goodnightsweetie
打开第三个文档:
在这里插入图片描述

没发现什么东西。将文档后缀改成zip。并打开:
在这里插入图片描述

看到一个压缩包。解压出一张图片:
在这里插入图片描述

前面得出的密码没有使用,图片又为bmp。推测为wbs43open隐写。
用wbs43open打开图片:
在这里插入图片描述

输出文件为111.txt,执行后,打开111.txt,得到flag
在这里插入图片描述

别忘了,用BMZCTF提交

[2020首届祥云杯]带音乐家

下载附件,为一个压缩包,里面有两个文件,其中一个是带密码加密的压缩包,试了伪加密,无法解出,我们只能从另一个文件中解聘密码了。
用010editor打开。发现文件头为:
在这里插入图片描述

百度搜了下,为MIDI文件的文件头。
可以确定为MIDI音频文件。试了AudacityPortable,没有发现有用的东西。
再百度下有关MIDI的内容:
在这里插入图片描述

我们需要对内容进行解密。
打开官网:http://velato.net,下载程序
在这里插入图片描述

对“decode_it”进行解密,
在这里插入图片描述

在目录下生成了一个‘decode_it.exe’文件,在CMD中打开,得到密码‘Hello, World!’
用密码打开压缩包:
在这里插入图片描述

看到一串base编码,解码后是乱码,再看前面的符号,为精灵语:
在这里插入图片描述

对照表,可得‘FLAGIS’,后面即为flag。提交后失败,说明flag被加密了。
再次打开压缩包,发现右边有说明:
在这里插入图片描述

复制出来:
在这里插入图片描述

只有.和-。推测为摩斯编码。
在这里插入图片描述

解密后为AESKEY9219232322
提示是AES加密,我们用AES解密,得到:
在这里插入图片描述

Flag: flag{mU51c_And_ch@ract0rs~},记得用BMZCTF提交

2018 安洵杯 boooooom

下载附件。为一个压缩包。打开后里有3个文件,带有密码。
尝试伪加密失败,使用Advanced Archive Password Recovery,进行爆破,先试数字。
在这里插入图片描述

在这里插入图片描述

得到密码”3862”
将文件解压出来后,password.zip和flag.zip都带有密码。而且均不是伪加密(一个一个试的。。。。)。
打开password.py,里面是一个读password.txt文件内容并进行base64和md5加密的加密程序

import base64
import hashlib
f = open("password.txt",'r')
password = f.readline()
b64_str = base64.b64encode(password.encode('utf-8'))
hash = hashlib.md5()
hash.update(b64_str)
zip_passowrd = hash.hexdigest()
print(zip_passowrd)

而password.txt在password.zip里,所以我们应该先把password.txt解压出来。打开password.zip,发现password只有8个字节。所以可以尝试进行crc爆破:
在这里插入图片描述

脚本为:

import zlib
for i in range(0,100000000):
    buf = str(i).rjust(8,'0')
    buf_tmp = zlib.crc32(buf.encode('utf-8'))& 0xffffffff
    if buf_tmp == 0x0cd95dac:
        print (buf)

最终得到password.txt的内容:’08646247‘
我们再使用password.py的程序对’08646247‘加密:

import base64
import hashlib
password = '08646247'
b64_str = base64.b64encode(password.encode('utf-8'))
hash = hashlib.md5()
hash.update(b64_str)
zip_passowrd = hash.hexdigest()
print(zip_passowrd)

得到:‘95c800c52134a571dfe69114c378e4be‘
使用这个字符串对flag.zip进行解压,得到一张图片:
在这里插入图片描述

没发现什么有用的东西。尝试修改高度:
在这里插入图片描述

即可看到一个字符串:‘a184929e2c170e2b7dc12eb3106f0a16‘
提交flag{a184929e2c170e2b7dc12eb3106f0a16}成功

猜你喜欢

转载自blog.csdn.net/Crazy198410/article/details/112301744