前言

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

意识到很久没更新这个问题,我是想写点什么的,但好像一直当咸鱼也没啥可分享的,最近刚参加了一个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. 创建一个 Orchard Core CMS 站点

    本文通过引用项目模板的方式创建Orchard CMS站点. 创建项目有不同的方式可以为Orchard Core创建站点和模块.你可以在这里了解更多关于它们的信息.在本指南中,我们将使用我们的" ...

  2. CLion远程调试嵌入式开发板程序

    CLion远程调试嵌入式开发板程序 目录 CLion远程调试嵌入式开发板程序 1. 目的 2. 前提条件 3. CLion设置 3.1 设置一个Deployment 3.2 上传需要的目录到目标板子 ...

  3. Modern PHP 使用生成器yield 处理csv文件 Generator

    * 使用生成器处理csv文件 <?php function getRows($file) { $handle = fopen($file, 'rb'); if ($handle === fals ...

  4. P4770-[NOI2018]你的名字【SAM,线段树合并】

    正题 题目链接:https://www.luogu.com.cn/problem/P4770 题目大意 给出一个长度为\(n\)的字符串\(S\).\(q\)次询问给出一个串\(T\)和一个区间\([ ...

  5. 踩坑系列《五》 Incorrect datetime value: 时间添加失败原因

    在进行单元测试中通过 new Date() 方式添加时间时,报了 Data truncation: Incorrect datetime value:这样的错误(我数据库表的时间类型是 datetim ...

  6. The art of multipropcessor programming 读书笔记-硬件基础1

    本系列是 The art of multipropcessor programming 的读书笔记,在原版图书的基础上,结合 OpenJDK 11 以上的版本的代码进行理解和实现.并根据个人的查资料以 ...

  7. 峰值利用率80%+,视频云离线转码自研上云TKE实践

    作者 刘兆瑞,腾讯云高级研发工程师,负责腾讯明眸极速高清,画质重生等产品.专注于codec优化,画质增强等技术. 背景和问题 随着流量资费的降低和带宽的增加,视频成为人们获取信息越来越重要的方式,随之 ...

  8. 给力!斩获 GitHub 14000 Star,两周创办开源公司获数百万美元融资

    文章来源|AI科技大本营 作者|伍杏玲 上世纪 90 年代初,21 岁大学生 Linus Torvalds 开源 Linux 操作系统,自此掀起全球开源浪潮.随后"中国 Linux 第一人& ...

  9. C语言的return语句

    Q1:函数中的Return语句有什么用? Q2:Return 0有什么含义吗? A1:Return的作用为,跳出当前的函数,并且返回到调用当前函数的主调函数,当前函数中Return语句一下代码将不会运 ...

  10. Chrome 实时字幕

    Chrome 实时字幕