攻防世界Misc wp(1)

一、hit-the-core

1、在linux下对下载的文件使用strings进行查看。
使用命令为sring 文件名 | grep {
攻防世界Misc wp(1)_第1张图片
发现一串字样的字符串,观察未来,发现。从第3个字符开始每个4个字符就有一个大型字母。写python脚本提取大写字母

a = "cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}"

flag = ""
for i in range(3, len(a), 5):
    flag = flag + a[i]

print(flag)

输出

ALEXCTF{K33P_7H3_g00D_w0rk_up}

二、 2-1

爆破crc校验所需要了解到的PNG文件头知识
- (固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头
- (固定)四个字节00 00 00 0D(即为十进制的13)代表数据块的长度为13
- (固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)
- (可变)13位数据块(IHDR)
    - 前四个字节代表该图片的宽
    - 后四个字节代表该图片的高
    - 后五个字节依次为:
    Bit depth、ColorType、Compression method、Filter method、Interlace method
- (可变)剩余四字节为该png的CRC检验码,由从IDCH到IHDR的十七位字节进行crc计算得到。

思路、发现图片打不开,使用winhex打开,发现PNG文件文件头不对,修改图片文件头,发现还是打不开,继续观察,发现是文件宽度为0,然后使用脚本利用CRC爆出宽度

import struct, binhex
import binascii
misc = open("33.png","rb").read()

for i in range(1024):
    data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]
    crc32 = binascii.crc32(data) & 0xffffffff  # 取crc32的八位数据
    if crc32 == 0x932f8a6b:
        print(i)

修改宽度为输出的i的值就可以,注意winhex里面对应的是16进制,我们输出的是10进制,应该
i=hex(i) 就可以转换为16进制

三、János-the-Ripper

第一步,下载文件发现,一个未知格式的文件,使用winhex打开发现是zip文件,于是修改后缀名为zip。发现里面有一个加密的flag.txt文件。
第二步,我们可以考虑下伪加密,最简单的办法就是利用winrar的工具中的修复压缩文件功能(也可以使用winhex查看标识位进行判断,可以查看这篇文章),
第三步、利用ziperello进行爆破,发现密码,即可得到flag
攻防世界Misc wp(1)_第2张图片

四、2017_Dating_in_Singapore

第一步,题目给了一大堆数字,而且一段数字之间有横杆,下载的附件里有个新加坡的2017年的日历。于是猜想与日历有关

第二步,观察横杆数目刚好有12个,而且数字应该是2个数字为一个单位,没有超过31的。

第三步,在日历上按数字连线,既得得出flag。
z总结;出题人脑洞很大

五、神奇的Modbus

第一步,查看题目描述为寻找flag,提交格式为sctf{xxx}。那么我们就开始查找sctf.

第二步:使用warseshark的查找功能,成功找到flag,不过这个有个小坑,flag为sctf{Easy_Modbus}
攻防世界Misc wp(1)_第3张图片

六、4-1(盲水印)

第一步:下载文件,使用winhex打开图片,发现图片里包含其他文件。
第二步:直接修改文件后缀名为zip后发现一个一个压缩包和一个提示文件。

第三步:压缩包里有两张照片,想到在stegsolve中比较一下或者是盲水印攻击。stegsolve中比较,发现有条纹状的东西,怀疑是盲水印攻击。

第四步:根据提示文件,dag2.png中应该是含有盲水印的图片。

这边介绍下盲水印攻击的使用方法
提取图片中的盲水印:

python bwm.py decode 无水印图片 有水印图片 提取出的图片

合成盲水印图片:

python bwm.py encode 无水印图片 水印 有水印图片

bwm脚本的gitHub下载地址
由于盲水印的脚本运行环境为python2,还得需要安装python2的库,我的过程如下:

python2 -m pip install --upgrade pip

由于用到cv2这个库,所以安装

pip install opencv-python

最后安装:

pip install matplotlib

之后就可以成功运行脚本,执行以下命令

python2 bwm.py decode day1.png day2.png flag.png

在使用pip安装包的时候这边可能会报错,

UnicodeEncodeError: 'ascii' codec can't encode character u'\u258f'

原因是pip安装python包会加载用户目录,用户目录恰好是中文的,ascii不能编码

打开对应的安装目录路径如 D:\Python27\Lib\site-packages

新建一个文件 sitecustomize.py 输入下面内容

# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('gb2312')

注意:里面是gb2312 如果写成utf-8的话安装的时候就会出现下面乱码的情况,但是也能安装成功,如果gb2312 不行的话就试试换成utf-8,每个人的环境不一样

七、5-1(xortool的使用)

使用winhex查看未果,使用xortool查看,发现13机率最大
攻防世界Misc wp(1)_第4张图片
使用命令 xortool 1 -l 10 -c 20
攻防世界Misc wp(1)_第5张图片
尝试出了key:GoodLuckToYou,对原文件进行异或,脚本如下:即可得出flag.

import os

c = open("1",'rb').read()
key = "GoodLuckToYou"
def xor(c,k):
	 keylen = len(k)
 	 res = ""
	 for pos,c in enumerate(c):
		 res +=chr(ord(c) ^ ord(k[pos % keylen]))
	 return res 
print xor(c,key)

八、can_has_stdio?

攻防世界Misc wp(1)_第6张图片
打开文件,发现是trainfuck编码,在线解密,即可得到flag

十、MISCall

使用winhex打开,发现该文件为压缩文件,故修改文件后缀名为zip,
在这里插入图片描述
对压缩包里的文件进行一次上面操作,我们发现了.git文件。(flag.txt文件里不是flag)

查看git记录
git log
在这里插入图片描述

用如下命令查看修改的文件列表

git stash list

在这里插入图片描述
有东西,然后校验一下存储的文件列表

git stash show 

攻防世界Misc wp(1)_第7张图片
运行,s.py文件得到flag
在这里插入图片描述
补充
git stash 的作用

git stash用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作.git stash将本地的修改保存起来,并且将当前代码切换到HEAD提交上.

通过git stash存储的修改列表,可以通过git stash list查看.git stash show用于校验,git stash apply用于重新存储.直接执行git stash等同于git stash save.

你可能感兴趣的:(misc)