Bootstrap

攻防世界Misc wp(1)

一、hit-the-core

1、在linux下对下载的文件使用strings进行查看。
使用命令为sring 文件名 | grep {
在这里插入图片描述
发现一串字样的字符串,观察未来,发现。从第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
在这里插入图片描述

四、2017_Dating_in_Singapore

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

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

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

五、神奇的Modbus

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

第二步:使用warseshark的查找功能,成功找到flag,不过这个有个小坑,flag为sctf{Easy_Modbus}
在这里插入图片描述

六、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机率最大
在这里插入图片描述
使用命令 xortool 1 -l 10 -c 20
在这里插入图片描述
尝试出了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?

在这里插入图片描述
打开文件,发现是trainfuck编码,在线解密,即可得到flag

十、MISCall

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

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

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

git stash list

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

git stash show 

在这里插入图片描述
运行,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.

;