前言

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

意识到很久没更新这个问题,我是想写点什么的,但好像一直当咸鱼也没啥可分享的,最近刚参加了一个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 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

记一次CTF比赛过程与解题思路-MISC部分的更多相关文章

  1. 记一次ctf比赛解密题的解决(可逆加密基本破解之暴力破解)

    题目是这个样子的: code.txt的内容是这样: 有点吓人木?233333 其实解密之后是这样的: 找到一点安慰没? 好了,废话不多说.讲解一下思路吧. 我们知道base64加密是属于可逆加密的.简 ...

  2. CTF之图片隐写术解题思路

    参考大佬的博客:https://blog.csdn.net/a_small_rabbit/article/details/79644078 深有感触,觉得写得比较全,因此将此篇文章记录在此方便以后用得 ...

  3. 如何开始你的CTF比赛之旅-网站安全-

    在过去的两个星期里,我已经在DEFCON 22 CTF里检测出了两个不同的问题:“shitsco ”和“ nonameyet ”.感谢所有 的意见和评论,我遇到的最常见的问题是:“我怎么才能在CTFs ...

  4. 【CTF 攻略】CTF比赛中关于zip的总结

    [CTF 攻略]CTF比赛中关于zip的总结   分享到: --> 本文首发于安全客,建议到原地址阅读,地址:http://bobao.360.cn/ctf/detail/203.html 前言 ...

  5. 与PHP5.3.5的战斗----记php5.3.5安装过程

    与PHP5.3.5的战斗----记php5.3.5安装过程 摘自:http://blog.csdn.net/lgg201/article/details/6125189这篇文章写的很是不错,,,也是我 ...

  6. 一道仅有7人通过的超5星微软比赛题目-------解题思路&优秀代码分享,邀你来“找茬儿”

    6月23日英雄会平台发布了一道难度为超5星的微软比赛题目,截止活动结束共有300多名编程爱好者参与线上答题,而最终通过者仅有7人,通过率仅为2%.为什么成绩如此出人意料?是因为题目的英文描述难以理解? ...

  7. 记一次OutOfMemory定位过程-续

    在前文<记一次OutOfMemory定位过程>完成时最终也没有定位到ECS 中JVM Heap size无法控制的原因,今天再次尝试终于有了一些线索,翻查了ECS的部署脚本发现了memor ...

  8. ctf比赛linux文件监控和恢复shell

    之前参加ctf比赛时候临时写的,有很多不足,不过可以用,就贴出来分享给大家,希望对大家有帮助. 脚本一:记录当前目录情况 #!/bin/bashfunction getdir(){    for el ...

  9. i春秋CTF-“百度杯”CTF比赛 九月场 XSS平台

    “百度杯“CTF比赛 九月场 ###XSS平台   看了别人的wp才知道这里需要变数组引起报错然后百度信息收集,这一步在实战中我觉得是很有作用的,get到.       这里取百度rtiny,看别人w ...

随机推荐

  1. python列表底层实现原理

    Python 列表的数据结构是怎么样的? 书上说的是:列表实现可以是数组和链表.顺序表是怎么回事?顺序表一般是数组. 列表是一个线性的集合,它允许用户在任何位置插入.删除.访问和替换元素.列表实现是基 ...

  2. 基于AM3352/AM3354/AM3358/AM3359的Linux 开发环境搭建(上)

    遇到不少人新手小白问,前辈如何搭建一个优良的Linux 开发环境?之前一直都是在用win开发,现在想要尝试用Linux做开发等等一系列的问题.开源一直是给电子行业工作者提供了一种向技术更深处进发的机遇 ...

  3. YbtOJ#463-序列划分【二分答案,线段树,dp】

    正题 题目链接:https://www.ybtoj.com.cn/problem/463 题目大意 给出长度为\(n\)的序列\(A,B\).要求划分成若干段满足 对于任何\(i<j\),若\( ...

  4. Erase-Remove 惯用法

    看到<Effective STL>条款 9 的时候想到了我以前复习的"如何正确使用迭代器删除元素",我面试时使用的也是里面的方法,看面试官的反应好像也没有什么问题,还问 ...

  5. MySQL的本地事务、全局事务、分布式事务

    本地事务 事务特性:ACID,其中C一致性是目的,AID是手段. 实现隔离性 写锁:数据加了写锁,其他事务不能写也不能读. 读锁:数据加了读锁,其他事务不能加写锁可以加读锁,可以允许自己升级为写锁. ...

  6. Java到底怎么学?

    你现在是不是想学Java,但很迷茫不知该从何下手,那么请认真看完这篇文章,希望对你有所帮助! 作为零基础刚刚接触Java的朋友们来说,我的建议还是先看视频,虽然有很多人说看视频学习慢,建议直接买优秀的 ...

  7. 利用PATH环境变量 - 提升linux权限~👻

    利用PATH提升linux权限 参考地址:https://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/ ...

  8. Min_25筛 学习小记

    前言 为什么叫学习小记呢?因为暂时除了模板题就没有做其他的东西了.(雾 这个东西折磨了我一整天,看得我身不如死,只好结合代码理解题解,差点死在机房.(话说半天综合半天竞赛真是害人不浅) 为了以后忘了再 ...

  9. 题解 UVA1500 Alice and Bob

    题目传送门 题目大意 给出 \(n\) 堆石子,每次可以做以下两种操作之一: 将某两堆石子进行合并 将某一堆石子抽走一个石子 问谁必胜. 思路 就nm很妙好么? 首先,我们需要考虑每堆石子大小都 \( ...

  10. 【原创】C语言和C++常见误区(一)

    本文仅在博客园发布,认准原文地址:https://www.cnblogs.com/jisuanjizhishizatan/p/15414469.html 问题1:int类型占几个字节? 常见误区:占4 ...