buuctf misc 刷题记录(持续更新)

将军(gif分解)

本题题目有点问题不能发布改了一下,题目下载为gif,看的时候中间闪过三张白底红字,应该是分解gif,通过脚本分解后得到flag(注意小写的l和数字1长得很像,本题为数字1)

flag{he11ohongke}

你竟然赶我走

010直接打开图片,flag就在文件字符串尾

 flag{stego_is_s0_bor1ing}

二维码(zip爆破)

直接扫二维码,得到secret is here,010打开二维码png,得到隐藏zip文件,没有思路直接爆破(后来发现txt文件为4number,应该密码是4位数字),得到密码7639,解压zip得到CTF{vjpw_wnoei},替换为flag{vjpw_wnoei}

flag{vjpw_wnoei}

大白(png crc)

直接将图片高度修改为2倍,即可看到flag

flag{He1l0_d4_ba1}

N种方法解决

exe无法打开,放到kali中file命令查看,发现是txt文件,修改后缀打开文本文档,发现提示为base64加密的jpg,解base64,存储png图片发现为二维码,扫码得到KEY{dca57f966e4e4e31fd5b15417da63269}

flag{dca57f966e4e4e31fd5b15417da63269}

乌镇峰会种图

010打开图片,最后面藏有flag

flag{97314e7864a8f62627b26f3f998c37f1}

wireshark

查看流量包,找到其中http返回码200的流量,看有一段png,提取出来发现不是,然后看题干发现flag是管理员密码,看到有login的交互,找到password,得到flag

flag{ffb7567a1d4f4abdffdb54e022f8facd}

基础破解

看题干为4位数字加密,直接archpr爆破,得到密码2563,解压得到base64密文,解密得到flag

flag{70354300a5100ba78068805661b93a5c}

文件中的秘密

查看文件属性,发现备注中藏有flag

flag{870c5a72806115cb5439345d8b014396}

lsb(lsb隐写)

根据题目提示应该是lsb隐写,隐写了一个png文件,保存出来是二维码,直接扫码得到cumtctf{1sb_i4_s0_Ea4y}

flag{1sb_i4_s0_Ea4y}

zip伪加密

下载后发现为加密zip,010查看发现内容未加密,尝试用kali binwalk直接分离

flag{Adm1N-B2G-kU-SZIP}

被嗅探的流量

直接从分组字节流搜索flag,找到flag{da73d88936010da1eeeb36e945ec4b97}

flag{da73d88936010da1eeeb36e945ec4b97}

中间部分慢慢补充

[XMAN2018排位赛]通行证

打开是段base64,解密得到kanbbrgghjl{zb____}vtlaln,感觉像个栅栏,解密后找不到,没思路求助wp,发现是栅栏栏目7加密,栅栏加密

得到kzna{blnl_abj_lbh_trg_vg},在凯撒解密得到xman{oyay_now_you_get_it}

[MRCTF2020]千层套路

根据提示压缩包密码为压缩包名称,解了两个发现需要循环解压,不会写脚本直接看wp

通过脚本循环解压600多遍得到一个txt

import zipfile
import os
path=r"E:/buuctf/misc/千层套路/1" #这个自己把控想在哪里开始使用脚本
file="0573.zip"
def un_zip(Path,File_name): #传入一个路径和当前路径的压缩包名字,返回解压缩后的文件名字
        current_file=Path+os.sep+File_name #路径+'/'+文件名
        #new_path=''
        os.chdir(Path) #改变当前工作路径,方便添加文件夹
        
        zip_file=zipfile.ZipFile(current_file)
        #print(zip_file.namelist()[0])
        new_file=zip_file.namelist()[0] #新解压的压缩文件为新的路径名字
       
        zip_file.extractall( path=Path, members=zip_file.namelist(), pwd=File_name[0:-4].encode() )#因为密码就是文件名
        zip_file.close()
        
        return new_file

new=file
new1=''
while (1):
        #new1=un_zip(path,new) #第一次解压出来了new1
        if(new ==''):  #判断是否解压完毕,是则直接退出
                print("end:"+new1)
                break

        else:   #否则就开始新的解压
                new1=un_zip(path,new)
                print("continue:"+new1)
                new=new1

打开txt里面是rgb,用脚本生成图片,发现是个二维码,扫码得到flag

from PIL import Image
from zlib import *

file=open('qr.txt','r').read().split('\n')
#print(file)
i=0
maxlenth=200
pic=Image.new("RGB",(maxlenth,maxlenth))
for y in range(maxlenth):
    for x in range(maxlenth):
        if file[i]=='(0, 0, 0)':
            color=(0,0,0)
            pic.putpixel([x,y],color)
        else:
            color=(255,255,255)
            pic.putpixel([x,y],color)
        i=i+1
pic.show()



flag{ta01uyout1nreet1n0usandtimes}

百里挑一------存疑(exiftool查看图片信息)

题干为百里挑一,发现流量包中http传输有大量图片,导出http流,得到大量图片,没思路GG。
百度wp,通过exiftool图片信息查询工具可以查询图片中藏有的信息   exiftool * |grep flag  得到前半段flag{ae58d0408e26e8f


而后wp说搜索exif,然后对应到tcp流114,发现后半段26a3c0589d23edeec}   

flag{ae58d0408e26e8f26a3c0589d23edeec}

[MRCTF2020]CyberPunk

运行exe文件,发现说直到打开会给flag,会在2020.9.17打开,每隔10秒刷新,然后显示当前月日,将电脑时间调整到9月17日,重新打开exe,得到flag

flag{We1cOm3_70_cyber_security}

[SUCTF2018]followme(文件内容便利)

打开流量包,发现没什么线索,导出http内容,发现在进行爆破,之后没思路...

求助wp说将导出的http文件放到kali中,判断含有CTF,通过grep -r命令在文件夹中便利,得到SUCTF{password_is_not_weak}

flag{password_is_not_weak}

[安洵杯 2019]Attack(mimikatz获取dmp文件密码)

看下流量包,有很多http流量,先把流量都导出来看下,发现有个dmp文件,应该是要找管理员密码

放到mimikatz里面跑下获得管理员密码W3lc0meToD0g3

然后再看流量包没发现别的线索,直接放到kali里面formost试下,发现存在有zip包,打开需要管理员密码,应该就是前面那个,解压出来flag.txt中存在D0g3{3466b11de8894198af3636c5bd1efce2}

flag{3466b11de8894198af3636c5bd1efce2}

[SUCTF 2019]Game(3des)

首先看zip直接解压,发现是个html,打开发现说要再快点,直接看源码,有个flag,base32解密得到suctf{hAHaha_Fak3_F1ag},提交发现不对,再去看下png,010打开发现没有隐藏,Stegsolve打开,lsb隐写一段对称加密

尝试了下秘钥hAHaha_Fak3_F1ag,Fak3都不对,看下wp,说是3des加密,秘钥为suctf{hAHaha_Fak3_F1ag}(这tm谁能想到这么长的秘钥),得到suctf{U_F0und_1t}

flag{U_F0und_1t}

USB(rar文件编码结构、usb隐写、维吉尼亚)

题目给了一个rar和一个ftm文件,先看rar,打开说文件头失败,010看下,发现提示有问题,这里是rar文件编码的一些注意事项

RAR文件头为52 61 72 21 1A 07 00(大多数情况rar4.x) ,52 61 72 21 1A 07 10 00(小部分目前没见过rar5.x),RAR文件尾为C4 3D 7B 00 40 07 00,同时还要注意文件块一般是74开头

然后发现rar文件块被修改,将7A改成74,解压rar得到图片和txt提示。

图片用Stegsolve打开查看图层,发现在Blue plane 0 中藏有二维码

CQR打开二维码看下,得到ci{v3erf_0tygidv2_fc0}。

然后再看下ftm文件,binwalk看下藏有zip,分离下发现还有个pacp包,打开流量包发现都是usb流量,正好对应题目usb隐写,使用UsbKeyboardDataHacker-master

得到xinan,加上前面得到的ci{v3erf_0tygidv2_fc0},应该是维吉尼亚,用随波逐流解下,发现包含flag字符,应该是栅栏,再解下得到flag


flag{vig3ne2e_is_c00l}

[UTCTF2020]basic-forensics

jpg文件打不开,直接010打开看下,发现是个文档,搜索flag得到utflag{fil3_ext3nsi0ns_4r3nt_r34l}

flag{fil3_ext3nsi0ns_4r3nt_r34l}

[BSidesSF2019]zippy

打开流量包,发现传输了一个flag.zip文件,直接binewalk出来,是个加密的,然后看流量包中有unzip命令传输,其中包含密码supercomplexpassword,直接解压zip得到CTF{this_flag_is_your_flag}

flag{this_flag_is_your_flag}
 

[GUET-CTF2019]虚假的压缩包(rsa)

一共两个zip文件,先看下虚假的压缩包,010打开发现是个伪加密,修改后解压得到ket.txt,里面是个rsa算法,由于n=p*q,且pq为素数,所以pq为3和11

import gmpy2
"""
一般情况下会给p,q,(n),e,c
n=p*q,且p,q均为素数
d为解密钥,c为加密后密文,ans为解密后数据
将所有数据对应替换即可


gmpy2.mpz(n)#初始化一个大整数
gmpy2.mpfr(x)# 初始化一个高精度浮点数x
d = gmpy2.invert(e,n) # 求逆元,de = 1 mod n
C = gmpy2.powmod(M,e,n)# 幂取模,结果是 C = (M^e) mod n
gmpy2.is_prime(n) #素性检测
gmpy2.gcd(a,b)  #欧几里得算法,最大公约数
gmpy2.gcdext(a,b)  #扩展欧几里得算法
gmpy2.iroot(x,n) #x开n次根
"""



p = gmpy2.mpz(3)
q = gmpy2.mpz(11)
e = gmpy2.mpz(3)
l = (p-1) * (q-1)
d = gmpy2.invert(e,l)
c = gmpy2.mpz(26)
n = p * q
ans = pow(c,d,n)
print(ans)

通过脚本得到答案是5,解压另一个压缩包(解压时候密码是“答案是5”),一张图和一个文件,文件是16进制字符串,图片直接扔随波逐流看下,发现有个^5,找个脚本将文件所有字符^5操作

f1 = open('./亦真亦假','r')
xor_data = f1.read()
f1.close()
dec_data = ""
for i in xor_data:
    tmp = int(i,16) ^ 5
    dec_data += hex(tmp)[2:]
 
print(dec_data)

得到一个zip,打开发现是doc文件,进去搜flag发现看不到,改下文字颜色得到flag

flag{_th2_7ru8_2iP_}

[RCTF2019]draw(logo编程)

看到字符应该是个什么加密,没有思路找wp,是logo变成语言,直接找网站执行logo编程(可以把js下载到本地然后就不用在线使用了),得到RCTF_HeyLogo

flag{RCTF_HeyLogo}

[SWPU2019]Network(ttl隐写)

看了下只有63 127 191 255四个数字,应该是tll隐写,分别改为00 01 10 11,拼接转ascii

import binascii
f2=open('result.txt','wb')
with open('attachment1.txt','r') as f:
	lines = f.readlines()
	p = []
	for x in range(len(lines)):
		p.append(int(lines[x]))
	s=''
	for i in p:
		if(i==63):
			b='00'
		elif(i==127):
			b='01'
		elif(i==191):
			b='10'
		else:
			b='11'
		s+=b
#print(s)
flag = ''
for i in range(0,len(s),8):
	flag+=chr(int(s[i:i+8],2))
flag=binascii.unhexlify(flag)
f2.write(flag)

得到一个zip包,是个伪加密,修改后得到base64加密字符串,套娃解base64后得到flag

import base64
 
f = open('flag.txt','rb').read()
while True:
    f = base64.b64decode(f)
    if b'{' in f:
        print(f)
        break
    else:
        continue

flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

[ACTF新生赛2020]明文攻击(zip明文攻击)

一共一个zip和一个jpg,看下zip不是伪加密,根据题目应该是明文攻击爆破,看下jpg,后面藏有修改了文件头的zip,改文件头后发现和原先zip中flag.txt的crc32值相同,明文攻击爆破得到ACTF{3te9_nbb_ahh8}

flag{3te9_nbb_ahh8}

[MRCTF2020]Hello_ misc(ttl隐写)

先看png,010打开后发现藏有zip,是个加密的,爆破下,不是,然后再看下png通道,发现red中藏有图片(随便red通道掩一个就行),下载后说密码是!@#$%67*()-+,解压zip得到一串数字。里面只有63、127、191、255,应该是ttl隐写(python代码见[SWPU2019]Network),解出来得到rar-passwd:0ac1fe6b77be5dbe,解压出来得到一个zip,看了下是个doc文件,改成doc后有一段隐写的字符,发现是base64,分行解出一堆01字符串,试了下ascii不是,然后看wp说是把1替换成空格,得到He1Lo_mi5c~

flag{He1Lo_mi5c~}

[UTCTF2020]zero(0宽隐写)

打开没有思路,看下wp是0宽隐写,找了个代码,可以直接得到flag

/**
 *  Zero-Width Unicode Character Steganography
 *  Copyright (c) 2015-2016 Kei Misawa
 *  This software is released under the MIT License.
 *  http://opensource.org/licenses/mit-license.php
 */
(function(exports){
  'use strict';
  var chars = [];
  var radix = 0;
  var codelengthText = 0;
  var codelengthBinary = 0;
  /**
    Set characters of coded hidden text(zero width characters)
    args: string of zero width characters
    return: null
   */
  var setUseChars = function(newchars){
    if(newchars.length >= 2){
      chars = newchars.split('');
      radix = chars.length;
      codelengthText = Math.ceil(Math.log(65536) / Math.log(radix));
      codelengthBinary = Math.ceil(Math.log(256) / Math.log(radix));
    }
    return null;
  };
  /**
    Text Encoder
    args:
      text: original text to be embedded (String)
      data: text to be hidden (String)
    return: unicode stego text
   */
  var encodeText = function(text1, text2){
    return combine_shuffle_string(text1, encode_to_zerowidth_characters_text(text2), codelengthText);
  };
  /**
    Binary Encoder
    args:
      text: original text to be embedded (String)
      data: data to be hidden (Uint8Array)
    return: unicode stego text
   */
  var encodeBinary = function(text, data){
    return combine_shuffle_string(text, encode_to_zerowidth_characters_binary(data), codelengthBinary);
  };
  
  /**
    Text Decoder
    args: unicode text with steganography (String)
    return: JavaScript Object {
      originalText: original text (String),
      hiddenText: hidden data (String)
    }
   */
  var decodeText = function(text){
    var splitted = split_zerowidth_characters(text);
    
    return {
      'originalText': splitted.originalText,
      'hiddenText': decode_from_zero_width_characters_text(splitted.hiddenText, codelengthText)
    };
  };
  /**
    Binary Decoder
    args: unicode text with steganography (String)
    return: JavaScript Object {
      originalText: original text (String),
      hiddenData: hidden data (Uint8Array)
    }
   */
  var decodeBinary = function(text){
    var splitted = split_zerowidth_characters(text);
    
    return {
      'originalText': splitted.originalText,
      'hiddenData': decode_from_zero_width_characters_binary(splitted.hiddenText)
    };
  };
  
  setUseChars('\u200c\u200d\u202c\ufeff');
  
  exports.unicodeSteganographer = {
    encodeText: encodeText,
    decodeText: decodeText,
    encodeBinary: encodeBinary,
    decodeBinary: decodeBinary,
    setUseChars: setUseChars
  };
  
  /**
    Internal Functions
  */
  var encode_to_zerowidth_characters_text = function(str1){
    var result = new Array(str1.length);
    var base = '';
    var i;
    var c;
    var d;
    var r;
    
    //var base = '0'.repeat(codelength); // IE not support this method
    for(i = 0; i < codelengthText; i++){
      base += '0';
    }
    
    for(i = 0; i < str1.length; i++){
      c = str1.charCodeAt(i);
      d = c.toString(radix);
      
      result[i] = (base + d).substr(-codelengthText);
    }
    
    r = result.join('');
    
    for(i = 0; i < radix; i++){
      r = r.replace(new RegExp(i, 'g'), chars[i]);
    }
    
    return r;
  };
  var encode_to_zerowidth_characters_binary = function(u8ary){
    var result = new Array(u8ary.length);
    var base = '';
    var i;
    var c;
    var d;
    var r;
    
    for(i = 0; i < codelengthBinary; i++){
      base += '0';
    }
    
    for(i = 0; i < u8ary.length; i++){
      d = u8ary[i].toString(radix);
      result[i] = (base + d).substr(-codelengthBinary);
    }
    
    r = result.join('');
    
    for(i = 0; i < radix; i++){
      r = r.replace(new RegExp(i, 'g'), chars[i]);
    }
    
    return r;
  };
  var combine_shuffle_string = function(str1, str2, codelength){
    var result = [];
    var c0 = str1.split(/([\u0000-\u002F\u003A-\u0040\u005b-\u0060\u007b-\u007f])|([\u0030-\u0039]+)|([\u0041-\u005a\u0061-\u007a]+)|([\u0080-\u00FF]+)|([\u0100-\u017F]+)|([\u0180-\u024F]+)|([\u0250-\u02AF]+)|([\u02B0-\u02FF]+)|([\u0300-\u036F]+)|([\u0370-\u03FF]+)|([\u0400-\u04FF]+)|([\u0500-\u052F]+)|([\u0530-\u058F]+)|([\u0590-\u05FF]+)|([\u0600-\u06FF]+)|([\u0700-\u074F]+)|([\u0750-\u077F]+)|([\u0780-\u07BF]+)|([\u07C0-\u07FF]+)|([\u0800-\u083F]+)|([\u0840-\u085F]+)|([\u08A0-\u08FF]+)|([\u0900-\u097F]+)|([\u0980-\u09FF]+)|([\u0A00-\u0A7F]+)|([\u0A80-\u0AFF]+)|([\u0B00-\u0B7F]+)|([\u0B80-\u0BFF]+)|([\u0C00-\u0C7F]+)|([\u0C80-\u0CFF]+)|([\u0D00-\u0D7F]+)|([\u0D80-\u0DFF]+)|([\u0E00-\u0E7F]+)|([\u0E80-\u0EFF]+)|([\u0F00-\u0FFF]+)|([\u1000-\u109F]+)|([\u10A0-\u10FF]+)|([\u1100-\u11FF]+)|([\u1200-\u137F]+)|([\u1380-\u139F]+)|([\u13A0-\u13FF]+)|([\u1400-\u167F]+)|([\u1680-\u169F]+)|([\u16A0-\u16FF]+)|([\u1700-\u171F]+)|([\u1720-\u173F]+)|([\u1740-\u175F]+)|([\u1760-\u177F]+)|([\u1780-\u17FF]+)|([\u1800-\u18AF]+)|([\u18B0-\u18FF]+)|([\u1900-\u194F]+)|([\u1950-\u197F]+)|([\u1980-\u19DF]+)|([\u19E0-\u19FF]+)|([\u1A00-\u1A1F]+)|([\u1A20-\u1AAF]+)|([\u1AB0-\u1AFF]+)|([\u1B00-\u1B7F]+)|([\u1B80-\u1BBF]+)|([\u1BC0-\u1BFF]+)|([\u1C00-\u1C4F]+)|([\u1C50-\u1C7F]+)|([\u1CC0-\u1CCF]+)|([\u1CD0-\u1CFF]+)|([\u1D00-\u1D7F]+)|([\u1D80-\u1DBF]+)|([\u1DC0-\u1DFF]+)|([\u1E00-\u1EFF]+)|([\u1F00-\u1FFF]+)|([\u2000-\u206F]+)|([\u2070-\u209F]+)|([\u20A0-\u20CF]+)|([\u20D0-\u20FF]+)|([\u2100-\u214F]+)|([\u2150-\u218F]+)|([\u2190-\u21FF]+)|([\u2200-\u22FF]+)|([\u2300-\u23FF]+)|([\u2400-\u243F]+)|([\u2440-\u245F]+)|([\u2460-\u24FF]+)|([\u2500-\u257F]+)|([\u2580-\u259F]+)|([\u25A0-\u25FF]+)|([\u2600-\u26FF]+)|([\u2700-\u27BF]+)|([\u27C0-\u27EF]+)|([\u27F0-\u27FF]+)|([\u2800-\u28FF]+)|([\u2900-\u297F]+)|([\u2980-\u29FF]+)|([\u2A00-\u2AFF]+)|([\u2B00-\u2BFF]+)|([\u2C00-\u2C5F]+)|([\u2C60-\u2C7F]+)|([\u2C80-\u2CFF]+)|([\u2D00-\u2D2F]+)|([\u2D30-\u2D7F]+)|([\u2D80-\u2DDF]+)|([\u2DE0-\u2DFF]+)|([\u2E00-\u2E7F]+)|([\u2E80-\u2EFF]+)|([\u2F00-\u2FDF]+)|([\u2FF0-\u2FFF]+)|([\u3000-\u303F]+)|([\u3040-\u309F]+)|([\u30A0-\u30FF]+)|([\u3100-\u312F]+)|([\u3130-\u318F]+)|([\u3190-\u319F]+)|([\u31A0-\u31BF]+)|([\u31C0-\u31EF]+)|([\u31F0-\u31FF]+)|([\u3200-\u32FF]+)|([\u3300-\u33FF]+)|([\u3400-\u4DBF]+)|([\u4DC0-\u4DFF]+)|([\u4E00-\u9FFF]+)|([\uA000-\uA48F]+)|([\uA490-\uA4CF]+)|([\uA4D0-\uA4FF]+)|([\uA500-\uA63F]+)|([\uA640-\uA69F]+)|([\uA6A0-\uA6FF]+)|([\uA700-\uA71F]+)|([\uA720-\uA7FF]+)|([\uA800-\uA82F]+)|([\uA830-\uA83F]+)|([\uA840-\uA87F]+)|([\uA880-\uA8DF]+)|([\uA8E0-\uA8FF]+)|([\uA900-\uA92F]+)|([\uA930-\uA95F]+)|([\uA960-\uA97F]+)|([\uA980-\uA9DF]+)|([\uA9E0-\uA9FF]+)|([\uAA00-\uAA5F]+)|([\uAA60-\uAA7F]+)|([\uAA80-\uAADF]+)|([\uAAE0-\uAAFF]+)|([\uAB00-\uAB2F]+)|([\uAB30-\uAB6F]+)|([\uAB70-\uABBF]+)|([\uABC0-\uABFF]+)|([\uAC00-\uD7AF]+)|([\uD7B0-\uD7FF]+)|([\uD800-\uDFFF]+)|([\uE000-\uF8FF]+)|([\uF900-\uFAFF]+)|([\uFB00-\uFB4F]+)|([\uFB50-\uFDFF]+)|([\uFE00-\uFE0F]+)|([\uFE10-\uFE1F]+)|([\uFE20-\uFE2F]+)|([\uFE30-\uFE4F]+)|([\uFE50-\uFE6F]+)|([\uFE70-\uFEFF]+)|([\uFF00-\uFFEF]+)|([\uFFF0-\uFFFF]+)/g);
    var c1 = [];
    var i;
    var j;
    for(i = 0; i < c0.length; i++){
      if((typeof c0[i] !== 'undefined') && (c0[i] !== '')){
        c1.push(c0[i]);
      }
    }
    var c2 = str2.split(new RegExp('(.{' + codelength + '})', 'g'));
    var ratio = c1.length / (c1.length + c2.length);
    
    /* slow
    while((c1.length > 0) && (c2.length > 0)){
      if(Math.random() <= ratio){
        result.push(c1.shift());
      }else{
        result.push(c2.shift());
      }
    }*/
    i = 0;
    j = 0;
    while((i < c1.length) && (j < c2.length)){
      if(Math.random() <= ratio){
        result.push(c1[i]);
        i++;
      }else{
        result.push(c2[j]);
        j++;
      }
    }
    c1 = c1.slice(i);
    c2 = c2.slice(j);
    
    result = result.concat(c1).concat(c2);
    
    return result.join('');
  };
  var split_zerowidth_characters = function(str1){
    var result = {};
    result.originalText = str1.replace(new RegExp('[' + chars.join('') + ']', 'g'), '');
    result.hiddenText = str1.replace(new RegExp('[^' + chars.join('') + ']', 'g'), '');
    
    return result;
  };
  var decode_from_zero_width_characters_text = function(str1){
    var r = str1;
    var i;
    var result = [];
    for(i = 0; i < radix; i++){
      r = r.replace(new RegExp(chars[i], 'g'), i);
    }
    for(i = 0; i < r.length; i += codelengthText){
      result.push(String.fromCharCode(parseInt(r.substr(i, codelengthText), radix)));
    }
    
    return result.join('');
  };
  var decode_from_zero_width_characters_binary = function(str1){
    var r = str1;
    var i;
    var j;
    var result = new Uint8Array(Math.ceil(str1.length / codelengthBinary));
    
    for(i = 0; i < radix; i++){
      r = r.replace(new RegExp(chars[i], 'g'), i);
    }
    for(i = 0, j = 0; i < r.length; i += codelengthBinary, j++){
      result[j] = parseInt(r.substr(i, codelengthBinary), radix);
    }
    
    return result;
  };
  
  return null;
})(this);

(注意如果遇到txt题目,最好用sublime打开,0宽隐写注意下隐藏的具体是哪个)

flag{whyNOT@sc11_4927aajbqk14}

[WUSTCTF2020]spaceclub

发现内容为空,后来看有些行是6个空格,有些是12个,将6个的转为0,12个的转为1,得到01字符串,转ascii得到wctf2020{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}

flag{h3re_1s_y0ur_fl@g_s1x_s1x_s1x}

[GKCTF 2021]签到

看下没啥信息,把http流都存下来,每个16进制转ascii再base64都看下,发现有一段有嫌疑的字符串,但是没找到头绪,后来看说是直接分别每行逆序,然后再解base64可以得到


a='wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD'
b='jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM'
c='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI'
d='6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL'
e='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM'
f='z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL'
g='sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM'
h='DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y'
i='==QIhM0QDN0Q'

print(a[::-1])
print(b[::-1])
print(c[::-1])
print(d[::-1])
print(e[::-1])
print(f[::-1])
print(g[::-1])
print(h[::-1])
print(i[::-1])

ffllaagg{{}}WWeellcc))00mmee__GGkkCC44FF__mm11ssiiCCCCCCCCCCCC!!,双写自己转下即可

flag{Welc0me_GkC4F_m1siCCCCCC!}

[ACTF新生赛2020]music(文件异或)

打不开音频,应该是文件损坏,看看不是修改文件头,发现不是,无思路求教wp,是文件异或,由于开头多次出现A1,用010直接将整个文件和A1异或(010中工具-十六进制运算-二进制异或),得到正确音频文件,直接听可以得到abcdfghijk

flag{abcdfghijk}

[MRCTF2020]Unravel!!

看下那个png,010打开发现有隐藏压缩包和图片,解开是aes.png,内容为Tokyo,应该就是aes解密秘钥,然后看音频,文件名说是看下文件尾,010打开得到aes加密密文U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=,解一下得到CCGandGulu,通过这个解压最初始压缩包,得到一个音频,通过slienteeye得到MRCTF{Th1s_is_the_3nd1n9}


flag{Th1s_is_the_3nd1n9}

[CFI-CTF 2018]webLogon capture

看流量包,其中有password字段是个url加密,解密得到 CFI{1ns3cur3_l0g0n} 


flag{1ns3cur3_l0g0n}

[MRCTF2020]pyFlag

010打开三张图片,文件尾均有zip压缩包一部分,合在一起得到压缩包,看下不是伪加密,爆破得到密码1234,看下hint说都是base解密,然后随波逐流一直解,base85-16-32-16-64得到MRCTF{Y0u_Are_4_p3rFect_dec0der}

flag{Y0u_Are_4_p3rFect_dec0der}

[DDCTF2018]流量分析(tls秘钥)

查看hint说提示补齐rsa秘钥格式,说明应该有加密,在tcp流中寻找秘钥,输入tcp contains “key”追踪tcp流,发现有个base64加密的jpg文件

通过chef转存成jpg,打开查看应该就是秘钥,ocr识别后补全开头结尾成为秘钥文件。

将秘钥文件导入到wireshark中,wireshark编辑-首选项-Protocols-TLS-Edit

导入后搜索http即可找到内容,查看http流可以找到flag

flag{0ca2d8642f90e10efd9092cd6a2831c0}

[GKCTF 2021]excel 骚操作(excel隐藏,汉信码)

看了下以为是藏在了压缩包里面,010打开没有信息,7z打开也没发现藏东西,求助wp,说是有隐藏的1,然后将所有位置改为黑底色,调整大小就是个码

看wp说是汉信码,下载个中国编码app扫描得到flag


flag{9ee0cb62-f443-4a72-e9a3-43c0b910757e}

[UTCTF2020]File Carving

010打开,发现后面藏有zip,将zip单独取出来解压得到hidden_binary文件,放到kali里面看下是个elf,执行下得到utflag{2fbe9adc2ad89c71da48cabe90a121c0}

flag{2fbe9adc2ad89c71da48cabe90a121c0}

[watevrCTF 2019]Evil Cuteness

010打开图片,文件尾藏有zip文件,取出来后解压得到abc文件,放到kali中看下是个txt文件,打开得到watevr{7h475_4c7u4lly_r34lly_cu73_7h0u6h}

flag{7h475_4c7u4lly_r34lly_cu73_7h0u6h}

派大星的烦恼

打开图片是个全粉的照片,010打开,搜下22(题干中提示内容,0x22,0x44代表伤疤两种细胞),拷出来将D替换为1,"替换为0,看下ascii码不对,反过来以后再看下也不对,一共256位,推测可能是二维码,两个都试下转二维码,也不对,没有思路看下wp,说是需要D替换为1,"替换为0,然后倒序转ascii,再倒序输出(说是因为题干中提到了屁股,所以猜测倒序)

flag="0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100"
flag=flag[::-1]
#print(flag)
x=""
for i in range(len(flag)//8):
    x += chr(int(flag[8*i:(i+1)*8],2))
print(x[::-1])

得到6406950a54184bd5fe6b6e5b4ce43832

flag{6406950a54184bd5fe6b6e5b4ce43832}

[MRCTF2020]不眠之夜

[QCTF2018]X-man-A face(二维码定位点)

看到是个二维码缺少了左上和左下两个定位点,用画图将右上定位点复制到左上左下,获取二维码,扫码得到字符串(CQR扫了没出来,微微二维码扫出来了)放随波逐流里面解下是个base32得到QCTF{Pretty_Sister_Who_Buys_Me_Lobster}

flag{Pretty_Sister_Who_Buys_Me_Lobster}

粽子的来历

下载一共四个doc文件,均无法正常打开,010看下,开头夹杂了一段IComeFrom……,根据题目提示喜欢DBAPP标记,所以应该对应的我是C这个文件,将这部分与其他位保持一致修改为FF,可以打开文件。

看下文件内容,发现行间距不同,有1.5倍行距以及单倍行距,推测1.5倍对应的是1,单倍对应的是0,得到100100100001,根据题干md5加密得到d473ee3def34bd022f8e5233036b3345

flag{d473ee3def34bd022f8e5233036b3345}

[INSHack2017]sanity

是个签到题,打开md文件直接就能看到INSA{Youre_sane_Good_for_you}

flag{Youre_sane_Good_for_you}

key不在这里

图片是个二维码,扫码得到一个网址,中间有一串数字,感觉应该和这个有关10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568,首先不是十六进制,那看看是不是ascii,102 108 97 103正好是flag,那就把所有数字隔开,转ascii得到flag%7B5d45fa256372224f48746c6fb8e33b32%7D,%7B应该是url加密,解密得到flag{5d45fa256372224f48746c6fb8e33b32}

flag{5d45fa256372224f48746c6fb8e33b32}

hashcat(office文件密码)

不知道文件类型,放到kali里面看下,是个xml类型,应该是个office,首先先用doc,打开发现有个密码,用Accent Office Password Recovery破解,得到密码9919

然后发现打开不行,换成ppt试下,打开了,看下内容,发现倒数第二页有隐藏文字,全选变红发现flag

flag{okYOUWIN}

蜘蛛侠呀(全是新鲜知识点,gif时间隐写)

看完题目完全没思路,直接看wp跟着做

先看流量包,所有的icmp流量后面都跟了一串字符串,想办法提取出来

把流量包放到kali里面,用tshark提取下,得到data.txt

tshark -r out.pcap -T fields -e data > data.txt

发现有重复数据,python去下重

with open('data.txt', 'r') as file:
    res_list = []
    lines = file.readlines()
    print('[+]去重之前一共{0}行'.format(len(lines)))
    print('[+]开始去重,请稍等.....')
    for i in lines:
        if i not in res_list:
            res_list.append(i)
    print('[+]去重后一共{0}行'.format(len(res_list)))
    print(res_list)

with open('out.txt', 'w') as new_file:
    for j in res_list:
        new_file.write(j)

然后把十六进制转字符

import binascii

with open('out.txt','r') as file:
    with open('out1.txt','wb') as data:
        for i in file.readlines():
            data.write(binascii.unhexlify(i[:-1]))

然后去掉开头的start以及首尾两行,放到chef里面base64发现是个zip包

解压得到一个gif,是时间隐写(详见大佬写的gif隐写gif隐写分析),把gif放到kali里面直接命令解得到每帧之间的间隔

identify -format "%T" flag.gif  

将包含的20转为0,50转为1,然后二进制转ascii,得到mD5_1t,MD5加密后得到f0f1003afe4ae8ce4aa8e8487a8ab3b6

flag{f0f1003afe4ae8ce4aa8e8487a8ab3b6}

[SCTF2019]电单车(钥匙信号PT224X)

Audacity打开,调整下距离,发现波形有粗有细,判断应该粗细分别对应01,之后没思路了。

看下wp发现是个新知识,钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)。波形图中细的对应0,粗的对应1,得到0  01110100101010100110 0010 0 ,中间20位即为数据位

flag{01110100101010100110}

voip(voip协议)

遇到知识盲点,直接看wp,voip是互联网语音协议,也就是ip电话。

看下流量包中都是相关协议,wireshark可以直接播放语音内容,找到电话-voip通话,点击播放流即可听到语音内容,后面就是听力环节(非常不清晰),得到flag

flag{9001IVR}

[安洵杯 2019]easy misc(盲水印)

[UTCTF2020]sstv(慢扫描)

打开音频,没有什么思路,看下wp是慢扫描,需要在kali上面装qsstv软件

apt-get install qsstv

装完之后qsstv运行下软件,是图形化界面,选Options-Sound-From file,然后选确定,等待画面出现

flag{6bdfeac1e2baa12d6ac5384cdfd166b0}

[GUET-CTF2019]soul sipse(wav分解、Unicode转码)

首先拿到一个wav音频文件,放到Audacity中没有发现,010打开也没发现,binwalk和foremost也没有分理出内容。没有思路看下wp,说是使用steghide,可以无密码分解出txt

打开txt是个微盘链接,进去后下载得到png,直接打不开,010查看发现文件头被改了,修改后可以打开得到遗传Unicode编码

解出来得到感觉像加法,相加得到5304,试下果然是flag

flag{5304}

[UTCTF2020]spectogram

Business Planning Group

[湖南省赛2019]Findme(pngcrc爆破、png数据块头、crc值转ascii、zip数据头)

开局五张图,先都010打开看下,

第五张末尾有个提示,直接给了个字符串,先记录下来Yzcllfc0lN

然后第四张图最后也有相应字符串,也记录下来cExlX1BsY

然后看第三张,没啥思路,看第二张,最后藏有7z开头的字符串

拉出来转存成7z试下,打开不了,没思路看下第一张

第一张看下长宽和其他不一样,crc爆破下长宽应该是227*453,修改后发现图片最上面变了,没别的发现

后面看wp,图一修改完长宽后,chunk2和chunk3缺少IDAT头,需自行补上,补上后得到完整图片

之后Stegsolve打开,在Blueplane2中找到隐藏二维码,扫码得到字符串ZmxhZ3s0X3

第二图7z部分其实和zip相似,是377A0304,将所有的377A改成504B,得到压缩包,然后看里面文件的crc都一样,只有618不同打开看下得到字符串1RVcmVfc

第三张图的每一个chunk中uint32 crc都对应的一个ascii码,将所有连在一起得到字符串3RlZ30=

将五个字符串连在一起按照15423顺序拼接ZmxhZ3s0X3 Yzcllfc0lN cExlX1BsY 1RVcmVfc 3RlZ30=,转base64得到flag{4_v3rY_sIMpLe_PlcTUre_steg}

flag{4_v3rY_sIMpLe_PlcTUre_steg}

[GKCTF 2021]你知道apng吗(apng分离软件)

首先看下apng是什么,是个类似于gif的动图,可以用火狐打开,网上有专门的apng分离工具apng图片分隔

通过工具分解apng文件可以找到四个有二维码的图片

第一个二维码需要用ps拉伸下,在PS里面编辑-变换-扭曲,拉伸下可以扫出第一个信息flag{a3c7e4e5

第二个用Stegsolve扫下原图,切换下图层可以清晰看到二维码,扫码得到-9b9d

第三、四个可以直接扫出来分别为-ad20、-0327-288a235370ea},拼接得到flag

flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}

[ACTF新生赛2020]剑龙(AAencode、jpg隐写、剑龙隐写)

解压出来有一个hint.zip,先看下这个,解出来有个hh.jpg还有pwd.txt,先看txt打开是AAencode加密,随波逐流解密,得到welcom3!

有密码和图片大概率是jpg隐写,steghide解下试试,得到一串非对称加密密文。

看下图片详细信息,里面提示有密钥,解下密文出来提示想想剑龙

没思路看下wp,说是Stegosaurus(剑龙)隐写剑龙隐写

直接跑脚本得到flag

flag{3teg0Sauru3_!1}

[HDCTF2019]你能发现什么蛛丝马迹吗(内存取证)

题目是一个img文件,应该是个内存取证,需要用到volatility工具,原来没做过类似题目,直接跟着wp操作下来

首先通过imageinfo命令先看下这段内存数据的摘要信息,找到对应的版本profile

volatility -f memory.img imageinfo

之后通过pslist命令看下执行的进程,发现有个dump进程

volatility -f memory.img --profile=Win2003SP1x86 pslist

再通过cmdscan看下原来cmd中保留的命令,发现dumpit这个程序中有flag,给dump下来

volatility -f memory.img --profile=Win2003SP1x86 cmdscan

volatility -f memory.img --profile=Win2003SP1x86 memdump -p 1992 --dump-dir=./

把dmp文件foremost分离后,可以得到两张图片,一个写了key和iv,另一个扫描二维码得到密文jfXvUoypb8p3zvmPks8kJ5Kt0

vmEw0xUZyRGOicraY4=,那就是aes加密,解下得到flag

flag{F0uNd_s0m3th1ng_1n_M3mory}

greatescape(tls秘钥)

流量题,先看下协议分级,发现有ftp、http、还有tls加密的流量,大概率需要找私钥解密

先看下http流量,发现没有什么东西,再看下ftp流量,发现有传输.key文件

再看下前后的tcp流,发现下个流传输的就是明文私钥文件,存下来存成scc.key

将秘钥文件导入到wireshark中,wireshark编辑-首选项-Protocols-TLS-Edit

之后多了很多http流,搜下flag http contains “flag”,大小写都搜下,大写FLAG可以找到

flag{OkThatWasWay2Easy}

[INSHack2019]INSAnity

签到题,打开直接看到答案INSA{YouRe_Crazy_and_I_Love_it}`

flag{YouRe_Crazy_and_I_Love_it}

[INSHack2019]Sanity

签到题,打开直接看到答案INSA{Welcome}

flag{Welcome}

很好的色彩呃?

题目是个gif,打开看了下没有提示,分解了下gif也只有一张,各种方法都试了没思路,看下wp

用PS打开,每个色带取色会发现不同颜色只有最后两位不同,将这些保存,16进制转ascii,得到flag

flag{aapjes}

[INSHack2018]Self Congratulation

原图左上角有个黑白数据块,没找到具体该怎么使用,010,binwalk,Stegsolve都试了下没有发现,看下wp。

说是左上角这个黑白色块黑色为1,白色为0,转化为01字符串

连到一起转ascii得到

flag{12345678}

[ACTF新生赛2020]frequency(字频排序)

看题目frequency应该是频率,大概率是往字频考虑。打开doc看下字体,发现有隐藏文字,解开看下很长一串

然后看提示说有两截,再看下文件属性,发现还有一段字符串,连在一起解下base64,将解出来得到字符串跑下字频排序脚本

# -*- coding:utf-8 -*-
#Author: mochu7
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
strings = open('./1.txt').read()

result = {}
for i in alphabet:
	counts = strings.count(i)
	i = '{0}'.format(i)
	result[i] = counts

res = sorted(result.items(),key=lambda item:item[1],reverse=True)
for data in res:
	print(data)

for i in res:
	flag = str(i[0])
	print(flag[0],end="")

得到actfplokmijnuhbygvrdxeszwq,缺了大括号补上即为flag

flag{plokmijnuhbygvrdxeszwq}

[INSHack2017]insanity-

签到题,打开直接看到答案INSA{Youre_crazy_I_like_it}

flag{Youre_crazy_I_like_it}

[*CTF2019]otaku

看下压缩包被加密,爆破下发现不行,010打开是伪加密,修改下解压出来

[BSidesSF2019]table-tennis

看了下流量包中大多为tls流量,首先想是不是tls秘钥,搜索下tcp contains "key"大小写都试了找不到,试了下binwalk也没有内容,看下wp

icmp中包含有隐藏信息,放到kali里面用tshark把data内容提取出来

tshark -r attachment.pcapng -T fields -e data > data.txt

提取后整理下内容,把空行以及冗余数据删除下,用cyberchef 16进制转ascii,得到

中间字符串Q1RGe0p1c3RBUzBuZ0FiMHV0UDFuZ1Awbmd9转下base64得到CTF{JustAS0ngAb0utP1ngP0ng}

flag{JustAS0ngAb0utP1ngP0ng}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值