zoukankan      html  css  js  c++  java
  • 记一次CTF比赛过程与解题思路MISC部分

    前言

    最近好久没更新博客和公众号了,有朋友问是不是在憋大招,但我不好意思说其实是因为最近一段时间太懒了,一直在当咸鱼…

    意识到很久没更新这个问题,我是想写点什么的,但好像一直当咸鱼也没啥可分享的,最近刚参加了一个CTF比赛,来分享一些作为CTF小白的解题过程和思路~

    由于篇幅太长,所以本文第一篇就先只发MISC部分,相比较于固定类型的几种题目,MISC是最好玩的,比较考验知识广度和想象力(而且有签到题)

    推荐渗透测试工具

    比赛回顾

    大概看下这次比赛有哪些题

    MISC

    PDF

    下载下来是个PDF,里面只有一张图,啥也没有

    尝试转换成word,得到flag

    Ext Alpha

    看一下题目,啥提示也没有,好吧,先下载来看看

    打开是个乱码文件

    嗯… 感觉二进制文件,丢binwalk分析一下

    分析不出来… 又尝试用UE和HEdit之类的16进制编辑器打开,但没啥用,难道是什么其他奇怪的二进制格式吗,我再试试

    找了个Python的文件转换脚本试试,结果还是不行

    最后看了官方的writeup,才知道有种文本编码格式叫 Ext Alpha 无语 =.=,从一开始我的思路就不对了

    官方的WriteUp是用Word来打开这个文件。。如下:

    我们先用txt打开,看一下:

    乱码,我们需要换种方式打开。这时可以考虑尝试用word打开。因为word对于初始文本编码下多数字体不常见时会弹出换字体编码窗口。如下:

    Windows简体中文文本编码出现乱码,我们可以考虑换其他编码:

    可见,Ext Alpha就是这个misc txt文本的编码格式。flag就是:flag{0a07c11e46af753fd24d40023f0fdce1}

    题目名称就叫Ext Alpha,结果文件编码就是这个,这是真的没想到,我的经验还是太少啊~

    而且这个编码格式是真的小众的那种,我都搜不到…

    只能说,学到了,666

    dddns

    又是没有啥提示的一道题,先下载附件吧

    下载下来是个压缩包,里面有个wireshark的流量包

    打开里面都是DNS流量包

    分析一下DNS流量特征

    从中得到两个信息:

    • 根域名为:b.dns.xibai
    • 关键字特征 type NULL:可知该流量包中的流量就是基于iodine这一工具建立的DNS隧道的流 量

    参考:DNS_Tunnel 分析

    官方writeup里也有一个脚本,应该也是网上哪里找的~ 这里官方的writeup说:

    “注意不要使用pyshark库,其解析DNS中的域名信息时会将非ascii字符解析为其他值的乱码,直接手动实现一个建议的DNS流量解析功能即可”

    wireshark抓包分析什么的这块我不太熟(大学计算机网络没认真学),但参考文章里的分析,找到一个现成的脚本,可以解密iodine流量(解析DNS流量中传递的明文请求和响应)

    代码就不贴,是在这里找到的:hxp CTF 2017 - Write-ups | Rawsec

    运行之后就解出来

    Successfully extracted 23 packets into test.pcapng
    

    重新用wireshark打开,追踪TCP流

    flag出来了!

    签到2

    题目提示「Base64÷4」,但base64解码解不出来,base16也解不出,猜测16进制hex转字符串,成功解出flag

    normal_png

    题目依然没东西

    下载下来看看,就简单一张图

    老规矩,binwalk分析一下

    果然不是简单的图片,暗藏玄机。拉出Hex Editor,这波修改png的高度,就可以把隐藏的东西显示出来

    03 6b改为04 6b

    可以看到flag出来了

    BBB

    继续没题目

    文件是个压缩包,打开里面有python代码

    打开看看

    看起来这是一段加密代码,第13行的注释是加密后的密文。

    所以这里就根据这个加密函数写一个解密的,把密码放进去解密

    根据代码,加密的思路是先生成一个随机数(1-100之间),将明文中每个字符的ASCII码值与生成随机数异或,然后将异或的结果base64编码,再进行逆序得到密文。

    逆向思维写解密代码,先将密文base64解码之后逆序,然后爆破随机数得到flag

    def decode(enc):
        tmp = base64.b64decode(enc[::-1])
        for k in range(1, 100):
            flag = ""
            for i in tmp:
                flag += chr(ord(i) ^ k)
            if "flag" in flag:
                return flag
    

    PS:python3的话要把flag += chr(ord(i) ^ k)改成flag += chr(i ^ k)

    运行一下

    print(decode('=Q2Lh8SLusyfvg3K4pXIt0iKrwyfgwyLrwXfhESL/pyLgImf4V3f'))
    

    爆破出:flag{963f488de2659f523448ca2a6f274686}

    长安没有秋天

    没题目,起了这个名字不知道是啥

    又是压缩包,哦吼是个损坏的压缩包

    有注释,有加密

    flag就在里面那个文件里,那就来看看这个密码是啥咯

    首先是这个注释key2{736e6f772a32},看起来应该是16进制字符串,解码一波得到snow*2

    试了下snow*2snowsnow密码都不对,不过题目哪有这么简单的,既然这个是key2,那应该还有个key1。

    联想到刚才打开压缩包的时候提示损坏,那这个压缩包应该还暗藏什么玄机,用010 editor打开看看~ 果然藏了点私货在里面

    这里key1就拿到了:key1{666c61672a33},继续16进制解码一下

    试着用flag*3flagflagflag这个密码解压flag,成功了,不过这文件……有点奇怪

    看似空白文件,其实是有东西的

    结合前面key2有个snow*2,联想到是snow隐写,密码应该是snowsnow~

    参考:

    用snow工具来解码试一试:

    Nice!flag到手!下一题~

    黑客入侵

    MISC部分的最后一题了~ 这次居然有提示,不过没啥用

    下载下来依然是压缩包,还套娃

    那我继续解压

    还有个说明

    就是要分析流量识别出webshell呗,那就开始,先wireshark打开分析

    过滤http协议,看到都是192.168.68.128这个IP的请求

    追踪一下TCP流,Host: 192.168.68.128:9080,端口9080

    提示里要的是黑客最后用的木马文件名,所以找到no数值最大的一个HTTP请求包

    所以最后一个木马名称是:tlswslhaoev4lva.php

    接下来就是要找“一个著名的webshell管理工具的名字”了,继续追踪TCP流

    流量加密了,继续

    好了,这里只能靠经验了,或者主流的Webshell管理工具就这几个,一个个尝试看看

    • godzilla
    • caidao
    • antsword
    • behinder

    这个特征应该是godzilla,接下来计算一下md5就能得出flag了~

    在线工具:MD5在線加密(HASH)工具 - 010tools

    最后flag:flag{fe7c3416a2ace0d97e4029e77368c5ab}

    参考资料

    在线工具

    欢迎交流

    程序设计实验室专注于互联网热门新技术探索与团队敏捷开发实践,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

    程序设计实验室.jpg

    程序设计实验室专注于互联网热门新技术探索与团队敏捷开发实践, 在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料, 同时有任何问题都可以在公众号后台留言~
  • 相关阅读:
    sys_refcursor vs ref cursor in oracle
    Oracle-cursor动态游标
    游标(cursor)--显式游标&隐式游标、游标四个属性、循环遍历
    PL/SQL IF CASE
    python字符串的encode和decode
    python中raw_input()与input()
    Emacs显示行号
    Python爬虫——抓取糗百段子
    Python代码一定要对齐
    Python标准库内置函数——hasattr
  • 原文地址:https://www.cnblogs.com/deali/p/15512126.html
Copyright © 2011-2022 走看看