记录一些有意思的题目

目录索引

  • 7-2
  • ewm
  • Mysterious-GIF
  • crc
  • 4433
  • challenge_how_many_Vigenère
  • 流量分析
  • 未完待续...

7-2

下载解压得到一个文件夹,里面有一堆文件,对所有文件名进行 base64 解码

# coding=utf-8
import os
import base64for name in os.listdir("/root/桌面/problem"):print name# 由于文件名不是4的倍数,需要在后面补‘=’missing_padding = 4 - len(name) % 4if missing_padding:name += '=' * missing_paddingprint str(base64.b64decode(name.encode()))

看到输出的信息里只有这个文件解码后不是乱码:YWluaWRleGluZ3podWFuZw

打开文件后看到里面存在一对花括号,那么很有可能这些数字解码后就是flag

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 94 22 42 91 23 {82 42 82 52 63 21 42 22 73 21 }00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

这次使用的是9键加密,第一个数字代表9键键盘下的数字,第二个数字代表该数字下的第几个字母。解密后再用一次凯撒加密即可得到 flag

wdflag{ylyoselfve}

ewm

下载解压后得到一个文件夹,打开看到里面是一堆二维码的部分图块,按大小被分为了 small 和 big 两部分,总共两个二维码,可以把图片拖到 word 里拼图,拼完的二维码扫出来就是 flag,而且两组图片拼图的结果都是一样的,这里给一个拼图的脚本(并不能完美的拼出来,但已经可以扫出来了)

import os
from PIL import Image
# 由于二维码并没有被完整的切开,都保留了一部分边缘
# 所以可以遍历所有图片来找到两个边缘符合的图片进行拼图# 设置已知的图片
def set_image(in_file, x, y):code[y][x] = in_filefile.remove(in_file)# 找到一张图片的右边一张
def find_right(in_file):result = ''pixes = Image.open(os.path.join(current_path, in_file)).load()# 计算出已知图片的右侧像素值(以二进制存储)pix = 0for row in range(width):r, g, b = pixes[width-1, row]pix <<= 1if r + g + b > 255:pix += 1# 用同样的方法在剩下的图片里找到与已知图片边缘相符的图片for fi in file:pixes = Image.open(os.path.join(current_path, fi)).load()pix2 = 0for row in range(width):r, g, b = pixes[0, row]pix2 <<= 1if r + g + b > 255:pix2 += 1if pix == pix2:result = fifile.remove(fi)breakreturn result# 找到一张图片的下边一张
def find_bottom(in_file):result = ''pixes = Image.open(os.path.join(current_path, in_file)).load()pix = 0for col in range(width):r, g, b = pixes[col, width-1]pix <<= 1if r+g+b > 255:pix += 1for fi in file:pixes = Image.open(os.path.join(current_path, fi)).load()pix2 = 0for col in range(width):r, g, b = pixes[col, 0]pix2 <<= 1if r + g + b > 255:pix2 += 1if pix == pix2:result = fifile.remove(fi)breakreturn resultif __name__ == '__main__':# 读取所有拼图文件current_path = r"C:\Users\28919\Desktop\big"  # r"C:\Users\28919\Desktop\small"file = [name for name in os.listdir(current_path)]# 计算拼图的大小n = int(len(file) ** 0.5)# 创建储存图片的数组code = [['' for i in range(n)] for i in range(n)]# 设置单张图片的边长width = 51# width = 42fail = False# 给出3个定位点,让脚本根据已知的图片进行拼图set_image('ebb9e03faca4_big.jpg', 0, 0)set_image('be557e464b98_big.jpg', 4, 0)set_image('13d9bb15c1c5_big.jpg', 0, 4)# 由于存在多张边缘相似的图片,对small进行拼图的时候需要多给一个数据# 但还是不能完美拼出来,但是拼出的结果可以扫出flag# set_image('f56e68b804ae_small.jpg', 0, 0)# set_image('dee457f4f9e0_small.jpg', 5, 0)# set_image('8e92d38c074c_small.jpg', 0, 5)# set_image('bb57a891b8c1_small.jpg', 0, 1)for y in range(n):if fail:breakfor x in range(n):# 对未知的图片进行查找if code[y][x] == '':print('Find%d,%d' % (x, y))if x == 0:# 如果是最左边的图片需要通过上方的图片来拼图code[y][0] = find_bottom(code[y-1][0])else:# 通过左边的图片进行拼图code[y][x] = find_right(code[y][x-1])# 找不到就直接退出if code[y][x] == '':fail = Truebreakelse:for i in code:print(i)if fail:print('拼图失败!')# 根据已找到的图片拼出最终的图片image = Image.new('RGB', (n*width, n*width), (255, 255, 255))for y in range(n):for x in range(n):if code[y][x] != '':p = Image.open(os.path.join(current_path, code[y][x]))image.paste(p, (width * x, width * y))image.save(r'C:\Users\28919\Desktop\flag.png')

脚本拼图的结果:

flag{g00d_g00d_study_1jf8988}

Mysterious-GIF

下载得一个 gif 文件,分帧看看不到什么异常,丢到 kali 里用 binwalk 跑一遍

发现有一个 zip 文件,用 foremost 命令分离出来,得到一个 temp.zip 文件

这压缩包里就一个256字节的文件却占用112K的空间,明显不对劲,再用 binwalk 命令跑一下

发现有一堆文件,再把它们分离出来(这里用binwalk分离的话可以自动解压),得到 partaa.enc 到 partke.enc 共计265个文件,enc文件是RSA加密后的文件,所以还需要找到私钥进行解密

先来了解一下 gif 的文件结构 https://blog.csdn.net/xlvector/article/details/589214
以 0x21FE 开头的注释扩展 (Comment Extension) 可以记录一些信息,我们在 010Editor 里搜索 21FE 看到有一些16进制字符

21FE后的80表示注释的长度,gif 的每一帧都有一个这样的注释,可以一个个将其复制出来,也可以在 kali 里用 strings 命令跑出来(最后一行开头的8是多余的,需要删掉)

16进制转为字符串,给它加个文件头即可得到RSA的私钥

-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDdMNbL5qVWiCQrX2w69q/7y3ShIPueptxfAwRQbROre30c6Uw/oK8weZTx44m0ALouhV46KcQJkhrqg8Oy3s5Y5FV1wCK766u2WLwVrWMIUJG1jDDrRvYPIcQ5UqCp5EDQCioRMGcUZEg2uvl142LDBAaeOLzFM4e2JczS+0r85mPRrCSxjLKLaLwIIQnZXIpXSURV/wjhwWR1fJGG8Q+ucEApaXscNCUF44bPm4HPCJ/0mrDCTWH/Y2CPVJkNk+o0V7VOtHKsML4NCNAJH44W/IRwJntNW+N8HrgpRkFughmNjcwlEkrtUKG1sRCy//WhuDunV2phSRQvHotBZvydAgMBAAECggEBAJyaN3mlkunw+aq7pKUagv6CzdBGyd9JxDyApk1K7OI8TBhsFM/3tBFeA1Y/Av+uhCLrygrkBye/ic7/+05o8S9+egMkRXNHKAuyR3gRikwYvxEKcJgjZZLRFVyAY7/lGv4wNBh3bIPDfF1Dg9szYnkwIH9lLEFyemM74AiAYlcqdVdZIE/bq2Z4JO0t9HCgHZNfQ7JdRfejNJQVYUD01Qu5dMtOR4eIMdbWkhbVXw2TE0H7xQxtjwT6zUrpqEvvO7e3FHEsBIX65VRXRLbv9OoayJxcRqX8eJkRi4L/Yzo4KTpEmkduJLXsFwt3aqQTbjZHXOlTT4NEdsH2p0TsCAECgYEA/e1bszO0a1+cBaDQjQO+Pv9BsJFDB3o1LGuUHMNS8FDpn3J46UkYyk52vIa0v4TcjqSSHNIvXW0TDEUkbNFA1HpUxVxlw0Bieeh8Bg3HfXyQBhXvdTD7k0lsDmMEo4UPKYS6D5cYWyrwhd5nCD0LrxebgO75RxL5QEIE+4CVIQkCgYEA3v8R/XKRVJPE4aEeg7pQ4uTvcFxjENNexxf6K4xpY4Lf9clIvdecRhC2t1HdR+xSulU/RSaRrzHcw3xg+L1uO0s1t5S7f3nu3aihIXkcgGSqXCZ1VHzBmeC40TVsfAybs7qJ0xY6T5q8Mnx2Ob5Z3lIGuyhjeVatFII2Sdz2J/UCgYEAteA15zQojSPNH+bgmbBNqtev2GUjSo7I2UkwrC1nEYQS4cbfPdDCdd0fhMdDXU4vn+fWU9hkXpmKpCY+AccblVUNtNMKfIB4SHMxqjBia8o1anZ5rknoV8WmJOPdZbYfdxB/KD2ED4DBCFGVILyAyuew1PfWCodXiiP/Z5jgt+kCgYEArsxqoa0o1o9uiR7u+HsX5INoXT9OOGY3qQDWjURnaCWywMujRYy5ZwK690AooLRStNUV33K4SAhh8KqSqOh0e+4ckWb5Apfl8cK5a6+v88T09X8AAdY5PBG3Teb+vs5zTpMublTCKJw2YazGT8UyVN8ff53NO9QBoE3hmEyod/ECgYA9k0xyCJzcveKdxry6pjQxk9FZz3AtEp1ocV5VowagV+ONez/HccF8GJO8BDqlP6XkcLUtsnp6tYReEICIHKw5C+fwAXlFItm09aEVTXw+xzLJb2Sr6gATPWM5qVaubxfsb5mXH/wD9iCLhJSorK0RHZktPbEs5ytDsqBHd5PFFw==
-----END PRIVATE KEY-----

然后脚本解密所有文件并输出就得到flag了

# coding=utf-8
import os
import Crypto.PublicKey.RSA
import Crypto.Cipher.PKCS1_v1_5
path = r"F:\ShareFile\_out.gif.extracted"
# 读取所有文件
file = [name for name in os.listdir(path)]
flag = b''
# 载入私钥
cipher = Crypto.Cipher.PKCS1_v1_5.new(Crypto.PublicKey.RSA.importKey(open(r'F:\ShareFile\private.txt','rb').read()))
for fi in file:message = open(os.path.join(path,fi),'rb').read()flag += cipher.decrypt(message,b'rsa')
open(r'F:\ShareFile\flag.jpg','wb').write(flag)

FelicityIsFun

crc

下载解压得到一个加密的zip文件,尝试暴力破解,解不出来

但是里面 1.txt、2.txt、3.txt 都只有6字节,可以根据CRC的值把原文破解出来,爆破工具:https://github.com/theonlypwner/crc32

看到得到的结果中只有 forum_ 是一个有意义的字符,猜测原文为 forum_
但是文件内容太少不能进行明文攻击,继续尝试爆破出来另外两个文件


在结果中找到另外两个有意义的字符:91ctf_com_66 连起来就是 forum_91ctf_com_66
尝试用这串字符作为密码解压,解压成功,得到一个内容为二进制的 txt 文件,转为字符串得到一个 HTML 标签:

<img src=“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAEYCAIAAAAI7H7bAAAFR0lEQVR4nO3dQY5bNxBAQU+Q+1/ZOUGIgHlqN2eqtoYljfQfuGiQ/Pr9+/cv4P/5609/APgOhAQBIUFASBAQEgSEBAEhQUBIEPj78G9fX19jnyOXD5onv43Dh7/7GPkLLnmvSecnyooEASFBQEgQEBIEhAQBIUFASBAQEgROA9mDJftq8wHf09PJux/l7hPmD8DrT5QVCQJCgoCQICAkCAgJAkKCgJAgICQIXA5kD5bMGQ/u5oyT08mD/YPL/XuTP/EdWpEgICQICAkCQoKAkCAgJAgICQJCgkA/kH1aPqs9WDK4XDLhfZ0VCQJCgoCQICAkCAgJAkKCgJAgICQI/MSB7ORxu3dD0qdPTv6ZrEgQEBIEhAQBIUFASBAQEgSEBAEhQaAfyH7XHZf5Ib2Tu3EP9v9e+z/hLysSJIQEASFBQEgQEBIEhAQBIUFASBC4HMg+va1y/22wk7PaJTfqPv1E/bIiQUJIEBASBIQEASFBQEgQEBIEhASBrye2H26wZAS5f9z5M58oKxIEhAQBIUFASBAQEgSEBAEhQUBIEBgdyOYjyMkXnNwuerDkvQ6efqKuWZEgICQICAkCQoKAkCAgJAgICQJCgsDokcWTd63evWBuyfHIB0tmmkuG9desSBAQEgSEBAEhQUBIEBASBIQEASFB4HIgu8TTF4/ezWon9wvn8g3Iex4AKxIEhAQBIUFASBAQEgSEBAEhQUBIEDgdWbzkQOA7k/tql2wX3e/pw6LPrEgQEBIEhAQBIUFASBAQEgSEBAEhQeC0Q3Zy0+LkPO7p85aXDH/3HxZ95/r3siJBQEgQEBIEhAQBIUFASBAQEgSEBIHLI4uX3N25ZFZ78PT8dMmv/MQlwlYkCAgJAkKCgJAgICQICAkCQoKAkCDwbe+QnRwm7t/4eWfJtmVHFsNPISQICAkCQoKAkCAgJAgICQJCgsDlHbJLdiYOD9022H+x73c9A9mRxfBxQoKAkCAgJAgICQJCgoCQICAkCPR3yN6ZvKF1cgS55Duc3BQ8OSXfM8a1IkFASBAQEgSEBAEhQUBIEBASBIQEgdNAdslJvN916prPT/P3WnJR7MGe04ytSBAQEgSEBAEhQUBIEBASBIQEASFBoL9DNp92LRm63b1gPnV9+pTm/SPj6yfKigQBIUFASBAQEgSEBAEhQUBIEBASBC7vkD1YMj+9s+Qo5oMlxyNPWnIusYEsfJyQICAkCAgJAkKCgJAgICQICAkC/Q7ZgyWTtUmTM+inL6U9eOLvsiJBQEgQEBIEhAQBIUFASBAQEgSEBIHTQHbJrtX9m0yXDC73f4w7kwcdX394KxIEhAQBIUFASBAQEgSEBAEhQUBIEDgNZJ/emjq5G3dywjtpzw2tFy84zIoEASFBQEgQEBIEhAQBIUFASBAQEgQujyx+emI4uZN0cl/t03t4J9/rE3+yFQkCQoKAkCAgJAgICQJCgoCQICAkCPR3yE7e+HlnydbUJbPa3J5dq//mE7+yFQkCQoKAkCAgJAgICQJCgoCQICAkCPQD2adNDkmX7DI+mPyTl5xm7A5Z+JOEBAEhQUBIEBASBIQEASFBQEgQ+IkD2SWT0HwEObmVeNKS7b3nr9eKBAEhQUBIEBASBIQEASFBQEgQEBIE+oHsknHnnckh6eG9Jg9VXvJeB/kO2U9cL2tFgoCQICAkCAgJAkKCgJAgICQICAkCX58YTm3w9G2wk/8r9/TI+JoVCQJCgoCQICAkCAgJAkKCgJAgICQInAaywH9kRYKAkCAgJAgICQJCgoCQICAkCAgJAkKCwD96oQOE684L1QAAAABJRU5ErkJggg==”>

Base64转图片得到一张二维码,扫描即得到 flag

flag{owid0-o91hf-9iahg}

4433

下载解压得到一张 jpg 图片,用 StegSolve 打开发现图片太大显示不全,用 Photoshop 将图片缩小后打开,在 Red plane 1 里发现了一个疑似二维码的东西

再打开原图找到指定位置发现一个清晰的二维码

扫描得到 …–.----…–… ,应该是摩斯电码,但不知道怎么分割,根据题目名称尝试以 4433 进行分割解码得到VYGUD,然而flag并不是这个,在摩斯电码中存在一些常用的缩写,VY 代表 VERY,GUD 代表 GOOD,所以正确的flag是 VERYGOOD

flag{VERYGOOD}

challenge_how_many_Vigenère

下载解压得到一段密文,题目让我们恢复明文,又根据 Vigenère 知为维吉尼亚加密,直接用爆破网站暴力破解 https://www.guballa.de/vigenere-solver(打开可能有点慢)
维吉尼亚密码的密钥越长越容易破解,调整好参数后破解:

得到密钥和明文:

密钥:ohihzkssefkmqxqbkihybnynvndzkdlqvhwhgywaftmeteecqprzjczvnmhnzwyasmlwbwvaqitejbfofycejjlcbpk
明文:aliceleavestheteapartyandentersthegardenwhereshecomesuponthreelivingplayingcardspaintingthewhiterosesonarosetreeredbecausethequeenofheartshateswhiterosesaprocessionofmorecardskingsandqueensandeventhewhiterabbitentersthegardenalicethenmeetsthekingandqueenthequeenafiguredifficulttopleaseintroduceshertrademarkphraseoffwithhisheadwhichsheuttersattheslightestdissatisfactionwithasubjectaliceisinvitedorsomemightsayorderedtoplayagameofcroquetwiththequeenandtherestofhersubjectsbutthegamequicklydescendsintochaosliveflamingosareusedasmalletsandhedgehogsasballsandaliceonceagainmeetsthecheshirecatthequeenofheartsthenordersthecattobebeheadedonlytohaveherexecutionercomplainthatthisisimpossiblesincetheheadisallthatcanbeseenofhimbecausethecatbelongstotheduchessthequeenispromptedtoreleasetheduchessfromprisontoresolvethematter

稍作处理得到:

Alice leaves the tea party and enters the garden where she comes upon three living playing cards painting the white roses on a rose tree red because the queen of hearts hates white roses. A procession of more cards, kings and queens and even the white rabbit enters the garden. Alice then meets the king and queen. The queen, a figure difficult to please, introduces her trademark phrase “off with his head”, which she utters at the slightest dissatisfaction with a subject. Alice is invited (or some might say ordered) to play a game of croquet with the queen and the rest of her subjects, but the game quickly descends into chaos. Live flamingos are used as mallets and hedgehogs as balls, and alice once again meets the cheshire cat. The queen of hearts then orders the cat to be beheaded, only to have her executioner complain that this is impossible since the head is all that can be seen of him. Because the cat belongs to the duchess. The queen is prompted to release the duchess from prison to resolve the matter.

看到这不用去 Google 也能猜到是爱丽丝梦游仙境,英文名称为 Alice’s Adventures in Wonderland,去掉空格和 ’ 再把大写换成小写,用破解得到的密钥加密即得到 flag

LCTF{osqjdcsvzjxfkoutsvdmoqcegnqc}

流量分析

下载得到一个流量包,全部是SQL注入的流量,在文件菜单里选择导出对象将所有HTTP对象导出

观察文件名不难发现:只有倒数第四和倒数第二个数字在变化,用 dir 命令跑一遍发现有部分文件大小和其他的不一样,而且都是倒数第二个数字最大的

将492字节和518字节的文件后缀名改为 html 打开对比一下


感觉518字节的文件应该有我们需要的信息
dir | findstr 518 打印出所有518字节的文件(Linux下用 ls -l | grep 518

按照倒数第四个数字的大小顺序将倒数第二个数字依次排列得到

102 108 97 103 123 99 50 98 98 102 57 99 101 99 100 97 102 54 53 54 99 102 53 50 52 100 48 49 52 99 53 98 102 48 52 54 99 125

将以上 Ascii 码转为字符得到 flag

flag{c2bbf9cecdaf656cf524d014c5bf046c}

未完待续…

[CTF] 攻防世界MISC高手区部分题目WriteUp(2)相关推荐

  1. 攻防世界MISC高手区Avatar

    攻防世界MISC高手区五分题[Avatar] 题目 解题分析过程 题目 解题分析过程 1.下载附件得一张图片(jpg) 2.扔进winhex,分析无果: 扔进Stegsolve,分析无果: binwa ...

  2. 攻防世界———MISC 高手区题解

    目录 1,base64stego 2,easycap 3,Avatar 4,What-is-this 5,签到题 6,Training-Stegano-1 7,Excaliflag 8,Get-the ...

  3. 攻防世界 misc 高手区 Miscellaneous-300

    解题过程 下载下来是一个zip 密码不知道,不是伪加密 爆破密码 emmm密码是里面的压缩包名,根据提示套娃了 import zipfile import re zipname = "C:\ ...

  4. 攻防世界 Misc高手进阶区 7分题 Russian-zips

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的7分题 本篇是Russian-zips的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 得到一个压缩文件 解压要 ...

  5. 攻防世界 Misc高手进阶区 7分题 流量分析

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的7分题 本篇是流量分析的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 题目描述 得到一个流量包 根据题目描述 ...

  6. 攻防世界 Misc高手进阶区 3分题 小小的PDF

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的3分题 本篇是小小的PDF的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 下下来一个pdf binwalk分析 ...

  7. 攻防世界misc高手进阶区刷题记录

    攻防世界misc高手进阶区刷题记录 easycap 解压出来之后为一个pcap文件,使用wireshark打开 右键追踪TCP数据流即可获得flag flag:385b87afc8671dee0755 ...

  8. 攻防世界 Misc高手进阶区 6分题 北京地铁

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的6分题 本篇是北京地铁的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 题目描述 拿到一个bmp图片 扔进ste ...

  9. 攻防世界 Misc高手进阶区 2分题 再见李华

    前言 继续ctf的旅程 攻防世界Misc高手进阶区的2分题 本篇是再见李华的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 下下来一个jpg文件 扔进stegsol ...

最新文章

  1. graylog2安装
  2. Android ListViewview入门
  3. python 编辑数学公式_Jupyter快速编辑高大上数学公式 泰勒展开式
  4. php里运行js,在PHP 中运行JS - mickelfeng的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. openstack 云_OpenStack作为云,CoreOS等的未来
  6. 【MySQL】通信协议
  7. KeyMob聚合致力于为广大开发者及广告聚合服务
  8. linux内核定时器
  9. Tether聘请前银行分析师首席合规官
  10. 无法定位程序输入点,于动态链接库xxx上的可能原因及解决方法
  11. 慧居科技在港交所上市状态“失效”,双良科技为控股股东
  12. 人品差的人,开口闭口都是这些话
  13. Linux下QT添加图片运行程序后:iCCP: known incorrect sRGB profile(实测有效)
  14. 关于假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?
  15. [报错] TypeError: run() argument after * must be an iterable, not int
  16. Navicat for MySQL(三叶草)破解工具
  17. CSS 奇思妙想 | 巧妙的实现带圆角的三角形
  18. #arcgis 中无法连接mdb数据库解决方法
  19. js 分析——百度模拟登录(二)
  20. Python将图片彩色转化为素描

热门文章

  1. 某HR自述:和高管PK了半小时,终于给一个47岁的程序员发了offer~
  2. 记一次macbook pro A1708更换电池的经历
  3. 21世纪最实用的智能营销软件是哪个
  4. 【侯捷】C++STL标准库与泛型编程(第二讲)
  5. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 8月13日
  6. 拼多多面试官没想到ThreadLocal我用得这么溜,人直接傻掉
  7. Android之黄油刀(butterknife)
  8. 淘宝-没素质的商家给消费者加入禁购名单
  9. Android Studio修改apk命名
  10. Ipad恢复按键音、锁定音和截屏音