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}

[WUSTCTF2020]girlfriend(DTMF拨号音)

看是一段音频,打开后看了下不是摩尔密码,没有思路看下wp,说是DTMF拨号音,通过软件dtmf2num查看

得到999*666*88*2*777*33*6*999*4*4444*777*555*333*777*444*33*66*3*7777,判断是手机键盘密码,摁几下就是第几个字母,连一起是youaremygirlfriends

flag{youaremygirlfriends}

[DDCTF2018](╯°□°)╯︵ ┻━┻

题目:d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9b2b2e1e2b9b9b7b4e1b4b7e3e4b3b2b2e3e6b4b3e2b5b0b6b1b0e6e1e5e1b5fd
发现每两位都是16进制数,分开后随波逐流转成10进制,得到212 232 225 244 160 247 225 243 160 230 225 243 244 161 160 212 232 229 160 230 236 225 231 160 233 243 186 160 196 196 195 212 198 251 185 178 178 225 226 185 185 183 180 225 180 183 227 228 179 178 178 227 230 180 179 226 181 176 182 177 176 230 225 229 225 181 253,发现所有数字全部大于128,无法ascii转字符,都减去128后转字符得到That was fast! The flag is: DDCTF{922ab9974a47cd322cf43b50610faea5}

[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}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值