当前位置:   article > 正文

buuctf misc 刷题记录(持续更新)_ctf百里挑一

ctf百里挑一

将军(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

  1. import zipfile
  2. import os
  3. path=r"E:/buuctf/misc/千层套路/1" #这个自己把控想在哪里开始使用脚本
  4. file="0573.zip"
  5. def un_zip(Path,File_name): #传入一个路径和当前路径的压缩包名字,返回解压缩后的文件名字
  6. current_file=Path+os.sep+File_name #路径+'/'+文件名
  7. #new_path=''
  8. os.chdir(Path) #改变当前工作路径,方便添加文件夹
  9. zip_file=zipfile.ZipFile(current_file)
  10. #print(zip_file.namelist()[0])
  11. new_file=zip_file.namelist()[0] #新解压的压缩文件为新的路径名字
  12. zip_file.extractall( path=Path, members=zip_file.namelist(), pwd=File_name[0:-4].encode() )#因为密码就是文件名
  13. zip_file.close()
  14. return new_file
  15. new=file
  16. new1=''
  17. while (1):
  18. #new1=un_zip(path,new) #第一次解压出来了new1
  19. if(new ==''): #判断是否解压完毕,是则直接退出
  20. print("end:"+new1)
  21. break
  22. else: #否则就开始新的解压
  23. new1=un_zip(path,new)
  24. print("continue:"+new1)
  25. new=new1

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

  1. from PIL import Image
  2. from zlib import *
  3. file=open('qr.txt','r').read().split('\n')
  4. #print(file)
  5. i=0
  6. maxlenth=200
  7. pic=Image.new("RGB",(maxlenth,maxlenth))
  8. for y in range(maxlenth):
  9. for x in range(maxlenth):
  10. if file[i]=='(0, 0, 0)':
  11. color=(0,0,0)
  12. pic.putpixel([x,y],color)
  13. else:
  14. color=(255,255,255)
  15. pic.putpixel([x,y],color)
  16. i=i+1
  17. 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

  1. import gmpy2
  2. """
  3. 一般情况下会给p,q,(n),e,c
  4. n=p*q,且p,q均为素数
  5. d为解密钥,c为加密后密文,ans为解密后数据
  6. 将所有数据对应替换即可
  7. gmpy2.mpz(n)#初始化一个大整数
  8. gmpy2.mpfr(x)# 初始化一个高精度浮点数x
  9. d = gmpy2.invert(e,n) # 求逆元,de = 1 mod n
  10. C = gmpy2.powmod(M,e,n)# 幂取模,结果是 C = (M^e) mod n
  11. gmpy2.is_prime(n) #素性检测
  12. gmpy2.gcd(a,b) #欧几里得算法,最大公约数
  13. gmpy2.gcdext(a,b) #扩展欧几里得算法
  14. gmpy2.iroot(x,n) #x开n次根
  15. """
  16. p = gmpy2.mpz(3)
  17. q = gmpy2.mpz(11)
  18. e = gmpy2.mpz(3)
  19. l = (p-1) * (q-1)
  20. d = gmpy2.invert(e,l)
  21. c = gmpy2.mpz(26)
  22. n = p * q
  23. ans = pow(c,d,n)
  24. print(ans)

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

  1. f1 = open('./亦真亦假','r')
  2. xor_data = f1.read()
  3. f1.close()
  4. dec_data = ""
  5. for i in xor_data:
  6. tmp = int(i,16) ^ 5
  7. dec_data += hex(tmp)[2:]
  8. 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

  1. import binascii
  2. f2=open('result.txt','wb')
  3. with open('attachment1.txt','r') as f:
  4. lines = f.readlines()
  5. p = []
  6. for x in range(len(lines)):
  7. p.append(int(lines[x]))
  8. s=''
  9. for i in p:
  10. if(i==63):
  11. b='00'
  12. elif(i==127):
  13. b='01'
  14. elif(i==191):
  15. b='10'
  16. else:
  17. b='11'
  18. s+=b
  19. #print(s)
  20. flag = ''
  21. for i in range(0,len(s),8):
  22. flag+=chr(int(s[i:i+8],2))
  23. flag=binascii.unhexlify(flag)
  24. f2.write(flag)

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

  1. import base64
  2. f = open('flag.txt','rb').read()
  3. while True:
  4. f = base64.b64decode(f)
  5. if b'{' in f:
  6. print(f)
  7. break
  8. else:
  9. 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

  1. /**
  2. * Zero-Width Unicode Character Steganography
  3. * Copyright (c) 2015-2016 Kei Misawa
  4. * This software is released under the MIT License.
  5. * http://opensource.org/licenses/mit-license.php
  6. */
  7. (function(exports){
  8. 'use strict';
  9. var chars = [];
  10. var radix = 0;
  11. var codelengthText = 0;
  12. var codelengthBinary = 0;
  13. /**
  14. Set characters of coded hidden text(zero width characters)
  15. args: string of zero width characters
  16. return: null
  17. */
  18. var setUseChars = function(newchars){
  19. if(newchars.length >= 2){
  20. chars = newchars.split('');
  21. radix = chars.length;
  22. codelengthText = Math.ceil(Math.log(65536) / Math.log(radix));
  23. codelengthBinary = Math.ceil(Math.log(256) / Math.log(radix));
  24. }
  25. return null;
  26. };
  27. /**
  28. Text Encoder
  29. args:
  30. text: original text to be embedded (String)
  31. data: text to be hidden (String)
  32. return: unicode stego text
  33. */
  34. var encodeText = function(text1, text2){
  35. return combine_shuffle_string(text1, encode_to_zerowidth_characters_text(text2), codelengthText);
  36. };
  37. /**
  38. Binary Encoder
  39. args:
  40. text: original text to be embedded (String)
  41. data: data to be hidden (Uint8Array)
  42. return: unicode stego text
  43. */
  44. var encodeBinary = function(text, data){
  45. return combine_shuffle_string(text, encode_to_zerowidth_characters_binary(data), codelengthBinary);
  46. };
  47. /**
  48. Text Decoder
  49. args: unicode text with steganography (String)
  50. return: JavaScript Object {
  51. originalText: original text (String),
  52. hiddenText: hidden data (String)
  53. }
  54. */
  55. var decodeText = function(text){
  56. var splitted = split_zerowidth_characters(text);
  57. return {
  58. 'originalText': splitted.originalText,
  59. 'hiddenText': decode_from_zero_width_characters_text(splitted.hiddenText, codelengthText)
  60. };
  61. };
  62. /**
  63. Binary Decoder
  64. args: unicode text with steganography (String)
  65. return: JavaScript Object {
  66. originalText: original text (String),
  67. hiddenData: hidden data (Uint8Array)
  68. }
  69. */
  70. var decodeBinary = function(text){
  71. var splitted = split_zerowidth_characters(text);
  72. return {
  73. 'originalText': splitted.originalText,
  74. 'hiddenData': decode_from_zero_width_characters_binary(splitted.hiddenText)
  75. };
  76. };
  77. setUseChars('\u200c\u200d\u202c\ufeff');
  78. exports.unicodeSteganographer = {
  79. encodeText: encodeText,
  80. decodeText: decodeText,
  81. encodeBinary: encodeBinary,
  82. decodeBinary: decodeBinary,
  83. setUseChars: setUseChars
  84. };
  85. /**
  86. Internal Functions
  87. */
  88. var encode_to_zerowidth_characters_text = function(str1){
  89. var result = new Array(str1.length);
  90. var base = '';
  91. var i;
  92. var c;
  93. var d;
  94. var r;
  95. //var base = '0'.repeat(codelength); // IE not support this method
  96. for(i = 0; i < codelengthText; i++){
  97. base += '0';
  98. }
  99. for(i = 0; i < str1.length; i++){
  100. c = str1.charCodeAt(i);
  101. d = c.toString(radix);
  102. result[i] = (base + d).substr(-codelengthText);
  103. }
  104. r = result.join('');
  105. for(i = 0; i < radix; i++){
  106. r = r.replace(new RegExp(i, 'g'), chars[i]);
  107. }
  108. return r;
  109. };
  110. var encode_to_zerowidth_characters_binary = function(u8ary){
  111. var result = new Array(u8ary.length);
  112. var base = '';
  113. var i;
  114. var c;
  115. var d;
  116. var r;
  117. for(i = 0; i < codelengthBinary; i++){
  118. base += '0';
  119. }
  120. for(i = 0; i < u8ary.length; i++){
  121. d = u8ary[i].toString(radix);
  122. result[i] = (base + d).substr(-codelengthBinary);
  123. }
  124. r = result.join('');
  125. for(i = 0; i < radix; i++){
  126. r = r.replace(new RegExp(i, 'g'), chars[i]);
  127. }
  128. return r;
  129. };
  130. var combine_shuffle_string = function(str1, str2, codelength){
  131. var result = [];
  132. 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);
  133. var c1 = [];
  134. var i;
  135. var j;
  136. for(i = 0; i < c0.length; i++){
  137. if((typeof c0[i] !== 'undefined') && (c0[i] !== '')){
  138. c1.push(c0[i]);
  139. }
  140. }
  141. var c2 = str2.split(new RegExp('(.{' + codelength + '})', 'g'));
  142. var ratio = c1.length / (c1.length + c2.length);
  143. /* slow
  144. while((c1.length > 0) && (c2.length > 0)){
  145. if(Math.random() <= ratio){
  146. result.push(c1.shift());
  147. }else{
  148. result.push(c2.shift());
  149. }
  150. }*/
  151. i = 0;
  152. j = 0;
  153. while((i < c1.length) && (j < c2.length)){
  154. if(Math.random() <= ratio){
  155. result.push(c1[i]);
  156. i++;
  157. }else{
  158. result.push(c2[j]);
  159. j++;
  160. }
  161. }
  162. c1 = c1.slice(i);
  163. c2 = c2.slice(j);
  164. result = result.concat(c1).concat(c2);
  165. return result.join('');
  166. };
  167. var split_zerowidth_characters = function(str1){
  168. var result = {};
  169. result.originalText = str1.replace(new RegExp('[' + chars.join('') + ']', 'g'), '');
  170. result.hiddenText = str1.replace(new RegExp('[^' + chars.join('') + ']', 'g'), '');
  171. return result;
  172. };
  173. var decode_from_zero_width_characters_text = function(str1){
  174. var r = str1;
  175. var i;
  176. var result = [];
  177. for(i = 0; i < radix; i++){
  178. r = r.replace(new RegExp(chars[i], 'g'), i);
  179. }
  180. for(i = 0; i < r.length; i += codelengthText){
  181. result.push(String.fromCharCode(parseInt(r.substr(i, codelengthText), radix)));
  182. }
  183. return result.join('');
  184. };
  185. var decode_from_zero_width_characters_binary = function(str1){
  186. var r = str1;
  187. var i;
  188. var j;
  189. var result = new Uint8Array(Math.ceil(str1.length / codelengthBinary));
  190. for(i = 0; i < radix; i++){
  191. r = r.replace(new RegExp(chars[i], 'g'), i);
  192. }
  193. for(i = 0, j = 0; i < r.length; i += codelengthBinary, j++){
  194. result[j] = parseInt(r.substr(i, codelengthBinary), radix);
  195. }
  196. return result;
  197. };
  198. return null;
  199. })(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可以得到

  1. a='wIDIgACIgACIgAyIK0wIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMiCNoQD'
  2. b='jMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjMyIjoQDjACIgACIgACIggDM6EDM6AjMgAzMtMDMtEjM'
  3. c='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0iCNMyIjMyIjMyIjMyI'
  4. d='6AjMgAzMtMDMtEjMwIjO0eZ62ep5K0wKrQWYwVGdv5EItAiM1Aydl5mK6M6jlfpqnrQDt0SLt0SL'
  5. e='t0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLt0SLK0AIdZavo75mlvlCNMTM6EDM'
  6. f='z0yMw0SMyAjM6Q7lpb7lmrQDrsCZhBXZ09mTg0CIyUDI3VmbqozoPW+lqeuCN0SLt0SLt0SLt0SL'
  7. g='sxWZld1V913e7d2ZhFGbsZmZg0lp9iunbW+Wg0lp9iunbW+Wg0lp9iunbW+WK0wMxoTMwoDMyACM'
  8. h='DN0QDN0QDlWazNXMx0Wbf9lRGRDNDN0ard0Rf9VZl1WbwADIdRampDKilvFIdRampDKilvVKpM2Y'
  9. i='==QIhM0QDN0Q'
  10. print(a[::-1])
  11. print(b[::-1])
  12. print(c[::-1])
  13. print(d[::-1])
  14. print(e[::-1])
  15. print(f[::-1])
  16. print(g[::-1])
  17. print(h[::-1])
  18. 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,再倒序输出(说是因为题干中提到了屁股,所以猜测倒序)

  1. flag="0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100"
  2. flag=flag[::-1]
  3. #print(flag)
  4. x=""
  5. for i in range(len(flag)//8):
  6. x += chr(int(flag[8*i:(i+1)*8],2))
  7. 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去下重

  1. with open('data.txt', 'r') as file:
  2. res_list = []
  3. lines = file.readlines()
  4. print('[+]去重之前一共{0}行'.format(len(lines)))
  5. print('[+]开始去重,请稍等.....')
  6. for i in lines:
  7. if i not in res_list:
  8. res_list.append(i)
  9. print('[+]去重后一共{0}行'.format(len(res_list)))
  10. print(res_list)
  11. with open('out.txt', 'w') as new_file:
  12. for j in res_list:
  13. new_file.write(j)

然后把十六进制转字符

  1. import binascii
  2. with open('out.txt','r') as file:
  3. with open('out1.txt','wb') as data:
  4. for i in file.readlines():
  5. 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下来

  1. volatility -f memory.img --profile=Win2003SP1x86 cmdscan
  2. 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,将解出来得到字符串跑下字频排序脚本

  1. # -*- coding:utf-8 -*-
  2. #Author: mochu7
  3. alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()_+- =\\{\\}[]"
  4. strings = open('./1.txt').read()
  5. result = {}
  6. for i in alphabet:
  7. counts = strings.count(i)
  8. i = '{0}'.format(i)
  9. result[i] = counts
  10. res = sorted(result.items(),key=lambda item:item[1],reverse=True)
  11. for data in res:
  12. print(data)
  13. for i in res:
  14. flag = str(i[0])
  15. 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}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/145692
推荐阅读
相关标签
  

闽ICP备14008679号