whaleCTF 杂项_Writeup

最近比较忙,杂项部分的wp断断续续完善,pwn和re部分的wp需要比较久,持续更新~
如有错误或者疑问,欢迎各位师傅留言指出~~~

Decode1

整道题的一个思路是 hex–>ascii–>url–>base64–>ascii–>str
打开文本是一串数字,发现每6个数字都是253开头,试试16进制——>ascii
whaleCTF 杂项_Writeup_第1张图片

a = """253444253534253435253335253433253641253435253737253444253531253646253738253444253434253637253442253446253534253642253442253444253534253435253738253433253641253435253737253446253531253646253738253444253434253435253442253444253534253435253332253433253641253435253738253444253531253646253738253444253534253637253442253444253534253431253738253433253641253435253738253444253431253646253738253444253534253633253442253444253534253435253331"""
print(''.join([chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]]))

whaleCTF 杂项_Writeup_第2张图片得到一串url编码,解码得到base64,再解码,得到ascii码,转字符串得到flag
whaleCTF 杂项_Writeup_第3张图片

Decode5

滑键盘系列,按着给的字母在键盘上对应的画得到最后的flag,小写提交错误,换成大写即可

流量分析

导出http对象发现一个压缩包,解压有个情报.doc,打开是空的,丢到winhex,在最后发现flag
whaleCTF 杂项_Writeup_第4张图片
whaleCTF 杂项_Writeup_第5张图片

A记录

实验吧的一道题目,丢到aircrack-ng分析,发现有个WPA包,ESSID是0719,下面会用到,爆破之
whaleCTF 杂项_Writeup_第6张图片

这种题目一般密码强度不大,懒得生成字典直接用kali自带的字典,在/usr/share/wordlist目录下,得到密码是88888888
whaleCTF 杂项_Writeup_第7张图片
得到密码后接下来就是解析数据包,airdecap-ng shipin.cap -e 0719 -p 88888888,会发现多出一个数据包,用wireshark打开
whaleCTF 杂项_Writeup_第8张图片题目提示flag是第一条记录的视频网站,过滤dns协议,getflag!
whaleCTF 杂项_Writeup_第9张图片

Password

打开看了数据包,是nebula模拟器的数据传输,全是TCP协议直接追踪流,红蓝分别是两端发出的消息,可以看到红方在蓝方提示password后输入了”backdoor…00Rm8.ate“, “.”一般是非可见字符,可以在下方选择HEX DUMP来显示二进制数据
whaleCTF 杂项_Writeup_第10张图片
hex 62对应的是ascii b ,7f是del键,0d是回车,因此最终得到的Password应该为backd00Rmate

Decode2

去掉头尾的±,末尾补上==,base64解码得到flag
whaleCTF 杂项_Writeup_第11张图片

Decode3

jsfuck解码,丢到控制台运行,%21是!

Decode4

一段js代码,eval函数改成alert弹窗,丢到控制台运行
whaleCTF 杂项_Writeup_第12张图片
在这里插入图片描述

WTF?

base64解码得到65536个二进制(65536=256^2),在notepad++上缩小字体大概可以看到一个二维码的轮廓,一种姿势是每256个字符换行,另一种办法是直接画图,得到一张二维码,getflag!

# -*- coding: UTF-8 -*-
# __Author__:pad0y
from PIL import Image
MAX = 256
with open('flag.txt', 'r') as f:
    c = f.read()
    newIm = Image.new('RGB', (MAX, MAX))
    white = (255, 255, 255)
    black = (0, 0, 0)
    for x in range(0,MAX):
        for y in range(0, MAX):
            if c[MAX*x+y] == '1':
                newIm.putpixel((x, y), black)
            else:
                newIm.putpixel((x, y), white)
    newIm.save('flag.png')

Decode8

whaleCTF 杂项_Writeup_第13张图片

栅栏解密下,也没看到正确格式的flag
参照wp:https://www.cnblogs.com/zqh20145320/p/5710072.html
把恺撒后的字符串竖排可以得到flag字样
whaleCTF 杂项_Writeup_第14张图片

Decode9

控制台运行得到:┼攠數畣整爠煥敵瑳∨?湥獵瑃≦┩
把上面这串复制到记事本,另存为,编码选上“Unicode”,关闭。用WinHex等可以查看16进制的软件,直接打开,一目了然。如果想显示正常,把开头的FF FE两个字节删了,再用记事本打开就看到了。木马为 <% execute request(“? enusCtf”)%

我的USB

binwalk,tshark各种分析无果,上strings大法 (真的有点坑)

strings for1.pcapng | grep Pwn

在这里插入图片描述

我下载了什么

追踪流发现有个tar.gz压缩包,tar.gz压缩包是1f8b开头的,分离出来解压即可得到flag
whaleCTF 杂项_Writeup_第15张图片
whaleCTF 杂项_Writeup_第16张图片

日志记录

文件下载下来发现是个rar文件,改后缀,大概看了下是sqlmap注入日志,在notepad++搜索flag,可以发现flag出现很频繁,猜测是个表名。
whaleCTF 杂项_Writeup_第17张图片
一般日志分析的思路就是一步步缩小分析的范围,可以用grep匹配内容分离出来。
whaleCTF 杂项_Writeup_第18张图片
把分离出来的日志丢到notepad++,都是url编码,notepad++有个插件可以全部解码

whaleCTF 杂项_Writeup_第19张图片
分析发现是二分法盲注的ASCII码爆破,通常当找到!=的时候就是正确的ASCII值,再次缩小分析分范围,把含有’!='的日志分离出来
在这里插入图片描述
分析文件log3需要对!=后边的ASCII提取并且转换成字符,编写py脚本,对文件log3进行处理
whaleCTF 杂项_Writeup_第20张图片

注入过程

仍然是一道注入流量分析,先对整个文件进行url解码,如果仔细分析是可以知道这是Errorbase的二分盲注,知道这个注入方式基本就可以拿到flag。
whaleCTF 杂项_Writeup_第21张图片
在日志中搜索flag字样,很明显攻击者从theflag表中dump出了数据。
whaleCTF 杂项_Writeup_第22张图片
二分法盲注思想是一旦状态码是500就要向200靠拢,如果是200往500靠拢,直到二分最后两个相邻的ascii码差值为1并且是500状态码就是所需要的ascii。
比如,从substring(.,1,1)>48的状态码是200,substring(.,1,1)>49的状态码是500,那其实就可以确定字符的ascii码是49, 以此类推拿到所有的ascii(8个)即可得到flag。

Decode7

5261是rar文件的开头,复制到winhex保存成rar文件,根据提示压缩密码是65h – 71h,得到解压密码秒破,再拿到txt文件的sha1小写前八位即可

whaleCTF 杂项_Writeup_第23张图片

Decode10

直接解md5提交即可 = =
出题人的初衷应该是爆破列出所有的字符串组合的MD5值和给出的md5比较,如果相等,返回原字符串,得出flag。

黑客攻击

十几M的流量包,过滤http的东西看下,可以发现一堆base64,解码了解下hacker的行为
whaleCTF 杂项_Writeup_第24张图片

用了个net use与目标机与目标机连接,一个个找太慢,因为题目提示Administrator用户的密码,所以逆向思维一下,在众多的http包一定会有Administrator的base64编码,所以只需要筛选出这个包就可以,对Administrator进行base64编码得到QWRtaW5pc3RyYXRvcg==,随便去掉后面几个字符,筛选http contains QWRtaW5pc3Ry

whaleCTF 杂项_Writeup_第25张图片
就剩下一个包,很完美的结果,对里面的base64解码即可看到密码
在这里插入图片描述

Decode11

这题主要考的是比较不常见的差分曼彻斯特编码,除了这个还有费纳姆密码(德军密码)、曼彻斯特解码都是比较少见的编码。

首先将十六进制报文转为二进制串,然后按照差分曼切斯特编码就能得到编码前的二进制串,从而得到传感器ID

a = 0x3EAAAAA56A69AA55A95995A569AA95565556
b = 0x3EAAAAA56A69AA556A965A5999596AA95656
b2 = bin(b)
print b2
str = ""
for i in range(len(b2[2:])/2):
	
	a1 = b2[i*2:i*2+2]
	a2 = b2[i*2+2:i*2+4]
	
	if a2 !='10' and a2 !='01':
		continue
	if a1 !='10' and a1 !='01':
		continue
	if a1!=a2:
		str+='1'
	else:
		str+='0'
print str
print hex(int(ss,2)).upper()

好多苍蝇

首先尝试筛选下有没有包含压缩包,可以看到有rar的传输,但是有多个,目测是分段传输,而且全是POST请求。因此过滤http.request.method==POST
whaleCTF 杂项_Writeup_第26张图片可以看到有五个相同的ip,也可以证实猜想
whaleCTF 杂项_Writeup_第27张图片
有一个fly.rar压缩包。size为525701,后面的md5主要用于文件传输中,它的目的主要是为了防止文件被篡改,以及验证文件的完整性和文件的版权。md5一出来更加验证了之前的想法。然后分析2-6包,5个数据包中的MediaType域的大小各为131436 、131436 、131436 、131436 、1777,共527521,比fly.rar大小525701大1820,多出来的猜想是包头类的信息,平均每个包大364,可以用dd命令去掉。

  • 思路是先将这5个包导出来,然后合成一个完整的压缩包,再查看里面的数据。把5个包以二进制方式全部导出来(选中media type导出字节流)

  • 将它们的前364个字节去掉

whaleCTF 杂项_Writeup_第28张图片

  • 合并压缩包
    在这里插入图片描述
  • 为了防止切割错误导致整个压缩文件的损坏先验证md5

whaleCTF 杂项_Writeup_第29张图片

  • 打开后发现是空的【WTF?】
    whaleCTF 杂项_Writeup_第30张图片
    用winhex打开发现开头和结尾都没出现错误,所以猜想是出现伪加密导致
    由于我使用的是7-zip,rar压缩包的伪加密在7-zip的表现是打开没有任何东西,而对于zip的伪加密则是会出现报错或者加密。
    可参考 https://ctf-wiki.github.io/ctf-wiki/misc/archive/rar/

  • 将7484改为7480保存即可,得到flag.txt,打开又是一堆乱码,file一下是个exe文件,改后缀运行【WTF?】在此终于理解了这题目的涵义

whaleCTF 杂项_Writeup_第31张图片

  • 想着难道接下来要逆向一波?试试最后的挣扎,暴力分离
    whaleCTF 杂项_Writeup_第32张图片
  • binwalk分析最后有张png,dd分离出来得到一张二维码,GETFLAGwhaleCTF 杂项_Writeup_第33张图片

至此AK

whaleCTF 杂项_Writeup_第34张图片

你可能感兴趣的:(WhaleCTF)