1

CTF做题总结(一)

 2 years ago
source link: https://qwzf.github.io/2019/04/16/CTF%E5%81%9A%E9%A2%98%E6%80%BB%E7%BB%93(%E4%B8%80)/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

上个周做了一道MISC题和两道Crypto题。感觉还是总结一下比较好,毕竟做题时查了很多大佬的博客和一些知识点。

1、Crypto-哈夫曼树和哈夫曼编码

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvOGI5NTVlZTlhNGZjZjc2Mi5wbmc

刚看到这道题时我毫无头绪。毕竟在写这篇博客时,还没有学过数据结构。而哈夫曼树是数据结构里的一个重要部分。于是我便在百度上搜索有关哈夫曼树和哈夫曼编码的知识。。。。。。。。

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvM2Y3OTI3MTM4YmYxOTc4ZS5wbmc

哈夫曼最大的目的是为了解决当你远距离通信(电报)的数据传输的最优化问题

路径:树中一个结点到另一个结点之间的分支序列构成两个结点间的路径
路径长度:路径上的分支数目
树的路径长度:树根到每个结点的路径长度的和
结点带权路径长度:结点到树根的路径长度与结点的权的乘积
树的带权路径长度:树中所以叶子结点的带权路径长度之和(WPL)

哈夫曼编码

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvZmU4MDMwMjQ4NDgyYzYxZi5wbmc
aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvZGI0NzZiYzJhYmUwMmM0Ni5wbmc

学习完这些知识点后,我对哈夫曼树和哈夫曼编码有了大致的了解,就是找最优二叉树,然后哈夫曼编码就是根据每个字母的出现频率不同,按照它们的权值进行构造哈夫曼树。将所有权值左分支改为0,右分支改为1,得到相应字符的的传输数据

然后,下载解压下载的题目文件,发现一个txt文件,打开后

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvZjdjNWQwNGI0MjQ4NGVkMi5wbmc

果然,是哈夫曼编码,由于我现在的编程能力,写不出有关的编码脚本。所以我画了一个哈夫曼树

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvMjIwN2EzMzk0YTdlYmQ2ZC5qcGc

根据txt文件,我猜想前五位编码应该是flag{,最后一位是},然后根据这六位编码,调整最底下的g、l、{、}的位置。然后得到每个字符的分配权值:

a:000

d:10(或01)

g:00101

f:110

l:00111

0:111

5:01(或10)

{:00100

}:00110

然后把txt文件里的0和1按照上述权值进行分隔

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvYjBlMjk2OTcyZmZlMDY1Yi5wbmc

然后比对每个字符的权值,对分隔好的0和1,进行编码,最终得到两个结果

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvODZhZTlmYThiNjk4YTBmZC5wbmc

然后最终答案就是其中的一个啦!!!!

2、Crypto-滴答滴答

这道题题目没有给任何提示,下载文件,发现并不能打开和用winrar解压文件。于是我便选择用notepad++打开

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvNDc4ZDYzZjM1NGQ0NzE0MC5wbmc

很显然这是摩斯电码,进行解码得到

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvYmRjZTViNjM3ODUwYWFjNC5wbmc

发现第一个斜杠前有一串特别的字母MORSEISCOOLBUTBACONISCOOLER仿佛看不太懂,写成小写字母morseiscoolbutbaconiscooler很明显,这句话的意思是“摩斯是酷的,但是培根是更酷的”,那么接下来就应该进行培根解密,直接解密,发现不行。查了查培根加密的格式发现,并没有斜杠“/”,于是我用notepad++的替换功能把所有的斜杠去掉,然后培根解密得到

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvMmU4MTg5NWJlY2IxNjRjOS5wbmc

“DO YOU KNOW THE FOUR FENCE ZGIAHYANAUOZNXWI”用百度翻译的意思是“你知道四道栅栏吗?”,可以想到接下来是栅栏密码解密,且每组字数为4。我把所有字符进行解密,发现并没有解出有意义的字符。所以我把“ZGIAHYANAUOZNXWI”进行栅栏解密,最后得到

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvMWM0MDY4YTQ5MzE3ZDE3Yi5wbmc

很显然最终结果出来了,下面进行提交,发现错误。这就应该是格式的问题了,调过之后成功提交了。。

3、MISC-TTL字段

从题目中,我们可以知道这道题是TTL字段。然而对此我有点懵,从来没有接触过它。于是我便查有关资料和一些大佬的博客

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvMjk2YTM4ODlhNGYwZGYwNi5wbmc

下载解压题目文件,发现ttl.txt文件,打开发现ttl.txt中的ttl只有4个值63,127,191,255

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvNzlmMGYxYjVjMmJlMTNmYi5wbmc

写出他们的二进制表示后发现只有最高两位不同,63-00111111、127-01111111、191-10111111、255-11111111。于是把4个值替换成00、01、10、11如果传输4个就是一字节,取前面的2位组成8位,对照二进制字母表,可以发现前面是ffd8,jpg图片标志

因为这个脚本我写不出来,于是用了大佬的脚本

fp = open('ttl.txt','r')
a = fp.readlines()
p = []
for i in a:
    p.append(int(i[4:]))
s = ''
for i in p:
    if i == 63:
        a = '00'
    elif i == 127:
        a = '01'
    elif i == 191:
        a = '10'
    elif i == 255:
        a = '11'
    s += a
# print(s)

import binascii
flag = ''
for i in range(0,len(s),8):
    flag += chr(int(s[i:i+8],2))
flag = binascii.unhexlify(flag)
wp = open('res.jpg','wb')
wp.write(flag)
wp.close()
#00111111 63
#01111111 127
#10111111 191
#11111111 255
python复制代码

然后把ttl.txt和这个脚本(脚本文件名我写成了1.py)放在同一路径,在cmd命令行输入命令python 1.py生成了一个fi.txt文件,打开

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvZGFiNTNkNTNlYzYwMTBkZC5wbmc

这是16进制编码,所以把这些编码粘贴在winhex里生成一个jpg文件,打开

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvZjdlYzE4M2RkMzJiZGM5MC5wbmc

发现只有二维码的一部分,在最后转换出的结果中,发现了六个jpg的文件头(ffd8),说明这就是六张图片,用foremost直接分开(或用strgsolve分离图片)就好了,之后用ps(或ppt)拼在一块

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvYTVhNmM1NWM2ZjE1NzhjNy5wbmc

扫描结果如下所示:

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvM2Y0MzljMmNiNTQyZWU2YS5wbmc

应该就是AutoKey(自动密钥密码)那个加密,找了个在线网站解密得到

aHR0cDovL2kyLnRpaW1nLmNvbS82OTAzNzQvNDk3MWZjYWVmNDRiNjg2Yi5wbmc

得到最终flag了!!!!!

这便是我上周做题的总结,小白进阶ing,欢迎大佬批评指正!


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

Recommend

  • 4
    • phuker.github.io 3 years ago
    • Cache

    XSS Quiz 练习题做题过程及感悟

    XSS Quiz Challenges 最近刚学 XSS。所以新手理解如有错误不当,欢迎批评指正。 本文仅供怀旧,详见后记。 第 1 题

  • 10
    • misakikata.github.io 2 years ago
    • Cache

    BMZCTF做题记录

    端午就该吃粽子访问login.php,会给一个这样的链接http://www.bmzclub.cn:22937/login.php?zhongzi=show.php 看样子是文件读取的漏洞,尝试读取一个passwd文件。

  • 6

    反射营销,像做题一样可以验算反推的营销新方法 张大力 2021-12-22 0 评论...

  • 4

    第二届BJD CTF做题总结与题目复现-Web全部文章(84)漏洞原理(23)CSRF漏洞(1)SQL注入(8)SSRF漏洞(1)XSS(2)XXE漏洞(1)...

  • 5
    • qwzf.github.io 2 years ago
    • Cache

    CTF做题总结(二)

    最近这段时间在内部平台上做了一些Web题,和最基础的Reverse签到题。虽说还有两道Reverse题没做出来,但还是先总结一下吧!Web1:BASE-INJECT

  • 5

    0x00 前言上周参加了第二届BJD CTF,本Web dog太垃圾,就做出两道Web。不过还好MISC和Crypto做的还行。那就先总结复现一下。标*表示未作出的0x01 MISC这个做的还行,不过有三道未做出(其中一道是mikutap。听,然后找按键...

  • 9
    • qwzf.github.io 2 years ago
    • Cache

    BUGKU做题总结(一)

    最近抽出一点时间练了一些BUGKU练习平台的MISC题,又学到了一些知识,感觉很好。现在总结一下当时没有立刻做出的、并有的借鉴大佬的题,加深加深自己的做题印象。MISC1(啊哒)本题主要是数据隐藏

  • 7
    • qwzf.github.io 2 years ago
    • Cache

    ISCC-MISC做题总结

    本小白又来总结了。。虽然做题做的非常菜,但还是总结一下吧。总结一下做题思想,让自己能够不断提高。。。。MISC1- (1)这道题主要是八进制转ascll码,然后base解码

  • 6

    本篇文章专门用于记录做反序列化类题目的做题姿势,会不断更新。 判断注入常用的的方式' // 报错有可能存在注入1 or 1=1 # // 正常显示 可能存在注入 意味着还需要进...

  • 3
    • bebinca.github.io 2 years ago
    • Cache

    洛谷做题笔记

    Step by Step洛谷做题笔记Created2022-01-18|Updated2022-01-19

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK