赞
踩
本题题目有点问题不能发布改了一下,题目下载为gif,看的时候中间闪过三张白底红字,应该是分解gif,通过脚本分解后得到flag(注意小写的l和数字1长得很像,本题为数字1)
flag{he11ohongke}
010直接打开图片,flag就在文件字符串尾
flag{stego_is_s0_bor1ing}
直接扫二维码,得到secret is here,010打开二维码png,得到隐藏zip文件,没有思路直接爆破(后来发现txt文件为4number,应该密码是4位数字),得到密码7639,解压zip得到CTF{vjpw_wnoei},替换为flag{vjpw_wnoei}
flag{vjpw_wnoei}
直接将图片高度修改为2倍,即可看到flag
flag{He1l0_d4_ba1}
exe无法打开,放到kali中file命令查看,发现是txt文件,修改后缀打开文本文档,发现提示为base64加密的jpg,解base64,存储png图片发现为二维码,扫码得到KEY{dca57f966e4e4e31fd5b15417da63269}
flag{dca57f966e4e4e31fd5b15417da63269}
010打开图片,最后面藏有flag
flag{97314e7864a8f62627b26f3f998c37f1}
查看流量包,找到其中http返回码200的流量,看有一段png,提取出来发现不是,然后看题干发现flag是管理员密码,看到有login的交互,找到password,得到flag
flag{ffb7567a1d4f4abdffdb54e022f8facd}
看题干为4位数字加密,直接archpr爆破,得到密码2563,解压得到base64密文,解密得到flag
flag{70354300a5100ba78068805661b93a5c}
查看文件属性,发现备注中藏有flag
flag{870c5a72806115cb5439345d8b014396}
根据题目提示应该是lsb隐写,隐写了一个png文件,保存出来是二维码,直接扫码得到cumtctf{1sb_i4_s0_Ea4y}
flag{1sb_i4_s0_Ea4y}
下载后发现为加密zip,010查看发现内容未加密,尝试用kali binwalk直接分离
flag{Adm1N-B2G-kU-SZIP}
直接从分组字节流搜索flag,找到flag{da73d88936010da1eeeb36e945ec4b97}
flag{da73d88936010da1eeeb36e945ec4b97}
中间部分慢慢补充
打开是段base64,解密得到kanbbrgghjl{zb____}vtlaln,感觉像个栅栏,解密后找不到,没思路求助wp,发现是栅栏栏目7加密,栅栏加密
得到kzna{blnl_abj_lbh_trg_vg},在凯撒解密得到xman{oyay_now_you_get_it}
根据提示压缩包密码为压缩包名称,解了两个发现需要循环解压,不会写脚本直接看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}
题干为百里挑一,发现流量包中http传输有大量图片,导出http流,得到大量图片,没思路GG。
百度wp,通过exiftool图片信息查询工具可以查询图片中藏有的信息 exiftool * |grep flag 得到前半段flag{ae58d0408e26e8f
而后wp说搜索exif,然后对应到tcp流114,发现后半段26a3c0589d23edeec}
flag{ae58d0408e26e8f26a3c0589d23edeec}
运行exe文件,发现说直到打开会给flag,会在2020.9.17打开,每隔10秒刷新,然后显示当前月日,将电脑时间调整到9月17日,重新打开exe,得到flag
flag{We1cOm3_70_cyber_security}
打开流量包,发现没什么线索,导出http内容,发现在进行爆破,之后没思路...
求助wp说将导出的http文件放到kali中,判断含有CTF,通过grep -r命令在文件夹中便利,得到SUCTF{password_is_not_weak}
flag{password_is_not_weak}
看下流量包,有很多http流量,先把流量都导出来看下,发现有个dmp文件,应该是要找管理员密码
放到mimikatz里面跑下获得管理员密码W3lc0meToD0g3
然后再看流量包没发现别的线索,直接放到kali里面formost试下,发现存在有zip包,打开需要管理员密码,应该就是前面那个,解压出来flag.txt中存在D0g3{3466b11de8894198af3636c5bd1efce2}
flag{3466b11de8894198af3636c5bd1efce2}
首先看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}
题目给了一个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}
jpg文件打不开,直接010打开看下,发现是个文档,搜索flag得到utflag{fil3_ext3nsi0ns_4r3nt_r34l}
flag{fil3_ext3nsi0ns_4r3nt_r34l}
打开流量包,发现传输了一个flag.zip文件,直接binewalk出来,是个加密的,然后看流量包中有unzip命令传输,其中包含密码supercomplexpassword,直接解压zip得到CTF{this_flag_is_your_flag}
flag{this_flag_is_your_flag}
一共两个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_}
看到字符应该是个什么加密,没有思路找wp,是logo变成语言,直接找网站执行logo编程(可以把js下载到本地然后就不用在线使用了),得到RCTF_HeyLogo
flag{RCTF_HeyLogo}
看了下只有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}
一共一个zip和一个jpg,看下zip不是伪加密,根据题目应该是明文攻击爆破,看下jpg,后面藏有修改了文件头的zip,改文件头后发现和原先zip中flag.txt的crc32值相同,明文攻击爆破得到ACTF{3te9_nbb_ahh8}
flag{3te9_nbb_ahh8}
先看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~}
打开没有思路,看下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}
发现内容为空,后来看有些行是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}
看下没啥信息,把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!}
打不开音频,应该是文件损坏,看看不是修改文件头,发现不是,无思路求教wp,是文件异或,由于开头多次出现A1,用010直接将整个文件和A1异或(010中工具-十六进制运算-二进制异或),得到正确音频文件,直接听可以得到abcdfghijk
flag{abcdfghijk}
看下那个png,010打开发现有隐藏压缩包和图片,解开是aes.png,内容为Tokyo,应该就是aes解密秘钥,然后看音频,文件名说是看下文件尾,010打开得到aes加密密文U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=,解一下得到CCGandGulu,通过这个解压最初始压缩包,得到一个音频,通过slienteeye得到MRCTF{Th1s_is_the_3nd1n9}
flag{Th1s_is_the_3nd1n9}
看流量包,其中有password字段是个url加密,解密得到 CFI{1ns3cur3_l0g0n}
flag{1ns3cur3_l0g0n}
010打开三张图片,文件尾均有zip压缩包一部分,合在一起得到压缩包,看下不是伪加密,爆破得到密码1234,看下hint说都是base解密,然后随波逐流一直解,base85-16-32-16-64得到MRCTF{Y0u_Are_4_p3rFect_dec0der}
flag{Y0u_Are_4_p3rFect_dec0der}
查看hint说提示补齐rsa秘钥格式,说明应该有加密,在tcp流中寻找秘钥,输入tcp contains “key”追踪tcp流,发现有个base64加密的jpg文件
通过chef转存成jpg,打开查看应该就是秘钥,ocr识别后补全开头结尾成为秘钥文件。
将秘钥文件导入到wireshark中,wireshark编辑-首选项-Protocols-TLS-Edit
导入后搜索http即可找到内容,查看http流可以找到flag
flag{0ca2d8642f90e10efd9092cd6a2831c0}
看了下以为是藏在了压缩包里面,010打开没有信息,7z打开也没发现藏东西,求助wp,说是有隐藏的1,然后将所有位置改为黑底色,调整大小就是个码
看wp说是汉信码,下载个中国编码app扫描得到flag
flag{9ee0cb62-f443-4a72-e9a3-43c0b910757e}
010打开,发现后面藏有zip,将zip单独取出来解压得到hidden_binary文件,放到kali里面看下是个elf,执行下得到utflag{2fbe9adc2ad89c71da48cabe90a121c0}
flag{2fbe9adc2ad89c71da48cabe90a121c0}
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}
看到是个二维码缺少了左上和左下两个定位点,用画图将右上定位点复制到左上左下,获取二维码,扫码得到字符串(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}
是个签到题,打开md文件直接就能看到INSA{Youre_sane_Good_for_you}
flag{Youre_sane_Good_for_you}
图片是个二维码,扫码得到一个网址,中间有一串数字,感觉应该和这个有关10210897103375566531005253102975053545155505050521025256555254995410298561015151985150375568,首先不是十六进制,那看看是不是ascii,102 108 97 103正好是flag,那就把所有数字隔开,转ascii得到flag%7B5d45fa256372224f48746c6fb8e33b32%7D,%7B应该是url加密,解密得到flag{5d45fa256372224f48746c6fb8e33b32}
flag{5d45fa256372224f48746c6fb8e33b32}
不知道文件类型,放到kali里面看下,是个xml类型,应该是个office,首先先用doc,打开发现有个密码,用Accent Office Password Recovery破解,得到密码9919
然后发现打开不行,换成ppt试下,打开了,看下内容,发现倒数第二页有隐藏文字,全选变红发现flag
flag{okYOUWIN}
看完题目完全没思路,直接看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}
Audacity打开,调整下距离,发现波形有粗有细,判断应该粗细分别对应01,之后没思路了。
看下wp发现是个新知识,钥匙信号(PT224X) = 同步引导码(8bit) + 地址位(20bit) + 数据位(4bit) + 停止码(1bit)。波形图中细的对应0,粗的对应1,得到0 01110100101010100110 0010 0 ,中间20位即为数据位
flag{01110100101010100110}
遇到知识盲点,直接看wp,voip是互联网语音协议,也就是ip电话。
看下流量包中都是相关协议,wireshark可以直接播放语音内容,找到电话-voip通话,点击播放流即可听到语音内容,后面就是听力环节(非常不清晰),得到flag
flag{9001IVR}
打开音频,没有什么思路,看下wp是慢扫描,需要在kali上面装qsstv软件
apt-get install qsstv
装完之后qsstv运行下软件,是图形化界面,选Options-Sound-From file,然后选确定,等待画面出现
flag{6bdfeac1e2baa12d6ac5384cdfd166b0}
首先拿到一个wav音频文件,放到Audacity中没有发现,010打开也没发现,binwalk和foremost也没有分理出内容。没有思路看下wp,说是使用steghide,可以无密码分解出txt
打开txt是个微盘链接,进去后下载得到png,直接打不开,010查看发现文件头被改了,修改后可以打开得到遗传Unicode编码
解出来得到感觉像加法,相加得到5304,试下果然是flag
flag{5304}
开局五张图,先都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}
首先看下apng是什么,是个类似于gif的动图,可以用火狐打开,网上有专门的apng分离工具apng图片分隔
通过工具分解apng文件可以找到四个有二维码的图片
第一个二维码需要用ps拉伸下,在PS里面编辑-变换-扭曲,拉伸下可以扫出第一个信息flag{a3c7e4e5
第二个用Stegsolve扫下原图,切换下图层可以清晰看到二维码,扫码得到-9b9d
第三、四个可以直接扫出来分别为-ad20、-0327-288a235370ea},拼接得到flag
flag{a3c7e4e5-9b9d-ad20-0327-288a235370ea}
解压出来有一个hint.zip,先看下这个,解出来有个hh.jpg还有pwd.txt,先看txt打开是AAencode加密,随波逐流解密,得到welcom3!
有密码和图片大概率是jpg隐写,steghide解下试试,得到一串非对称加密密文。
看下图片详细信息,里面提示有密钥,解下密文出来提示想想剑龙
没思路看下wp,说是Stegosaurus(剑龙)隐写剑龙隐写
直接跑脚本得到flag
flag{3teg0Sauru3_!1}
题目是一个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}
流量题,先看下协议分级,发现有ftp、http、还有tls加密的流量,大概率需要找私钥解密
先看下http流量,发现没有什么东西,再看下ftp流量,发现有传输.key文件
再看下前后的tcp流,发现下个流传输的就是明文私钥文件,存下来存成scc.key
将秘钥文件导入到wireshark中,wireshark编辑-首选项-Protocols-TLS-Edit
之后多了很多http流,搜下flag http contains “flag”,大小写都搜下,大写FLAG可以找到
flag{OkThatWasWay2Easy}
签到题,打开直接看到答案INSA{YouRe_Crazy_and_I_Love_it}`
flag{YouRe_Crazy_and_I_Love_it}
签到题,打开直接看到答案INSA{Welcome}
flag{Welcome}
题目是个gif,打开看了下没有提示,分解了下gif也只有一张,各种方法都试了没思路,看下wp
用PS打开,每个色带取色会发现不同颜色只有最后两位不同,将这些保存,16进制转ascii,得到flag
flag{aapjes}
原图左上角有个黑白数据块,没找到具体该怎么使用,010,binwalk,Stegsolve都试了下没有发现,看下wp。
说是左上角这个黑白色块黑色为1,白色为0,转化为01字符串
连到一起转ascii得到
flag{12345678}
看题目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}
签到题,打开直接看到答案INSA{Youre_crazy_I_like_it}
flag{Youre_crazy_I_like_it}
看下压缩包被加密,爆破下发现不行,010打开是伪加密,修改下解压出来
看了下流量包中大多为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}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。