文章目录

  • hit-the-core(找规律)
  • 2017_Dating_in_Singapore(脑洞)
  • can_has_stdio?(Brainfuck)
  • 打野(zsteg)
  • a_good_idea(将两张图片不同的像素标记出来)
  • 隐藏的信息(八进制转字符串)
  • Aesop_secret(ps图层叠加)
  • 我们的秘密是绿色的(新工具oursecret)
  • pure_color(送分)
  • Reverse-it(xxd,convert命令)
  • MISCall(git stash)
  • 神奇的Modbus(送分)
  • embarrass(送分)
  • Training-Stegano-1(送分)
  • Test-flag-please-ignore(16进制转字符)
  • stage1(图片隐写,反编译)
  • Hear-with-your-Eyes(音频隐写-频谱图)

hit-the-core(找规律)

日期:2020/02/09


这道题虽然很简单但是弄python的环境弄了很久。因为我写的脚本要用到isupper函数,而curses 库不支持 windows,所以要下载whl 包。试了很多个才找到适合我的版本。pip install curses-2.2.1+utf8-cp27-cp27m-win_amd64.whl
首先在winhex中找到了这段字符串,现在要把flag筛选出来。

最开始以为是提取大写字母:

import re
import sys
from curses.ascii import isupper
a='cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}'
b=re.findall('.{1}',a)
flag=' '
for i in b:if(i.istitle()==True):flag=flag+iif(i=='{' or i=='}'):flag=flag+i
print flag
# ALEXCTF{KPHD}

后来才知道是从第三个字符开始,每隔四个提取一个,得到正确flag:

import re
import sys
from curses.ascii import isupper
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}

2017_Dating_in_Singapore(脑洞)

日期:2020/02/09


根据题解知道了是在日历上按数字连线得到flag。

can_has_stdio?(Brainfuck)

日期:2020/02/09


直接用winhex打开全部复制到Brainfuck/Ook!中解码得到flag。

打野(zsteg)

日期:2020/02/08


先下载zsteg,用命令apt-get install zsteg下载失败,百度了一下,还可以用gem install zsteg下载。

然后直接zsteg 瞅啥.bmp得到flag。

a_good_idea(将两张图片不同的像素标记出来)

日期:2020/02/08


这道题一如既往的做不出来,看了看题解之后恍然大悟,顺便学学python对图像的操作,希望下次自己能把脚本写出来。参考:Python图像库PIL的类Image及其方法介绍


PIL 图像类class image

PIL是python里标准的图像处理库,可以对显示后的图像进行多种可视化处理操作。

Image类是PIL中的核心类,你有很多种方式来对它进行初始化,比如从文件中加载一张图像,处理其他形式的图像,或者是从头创造一张图像等。Image模块操作的基本方法都包含于此模块内。如open、save、conver、show…等方法。下面是PIL的 Image类中常用的方法和属性:

open方法

要从文件加载图像,使用 open() 函数, 在 Image 模块(类):

from PIL import Image             ##调用库,包含图像类
im=Image.open('D:\\desktop\\ctf\\to_do.png')   ##文件存在的路径,如果没有路径就是当前目录下文件
im.show()

使用save方法将jpg 转换成png

用 Image 类的 save() 方法保存文件的文件,使用给定的文件名保存图像。

from PIL import Image
im = Image.open("D:\\desktop\\ctf\\to_do.png")
print(im)
im.save("D:\\desktop\\ctf\\to_do.jpg")     ## 将"3d.png"保存为3d.jpg"

mode属性

im.mode ⇒ string

图像的模式,常见的mode 有 “L” (luminance) 表示灰度图像,“RGB”表示真彩色图像,和 “CMYK” 表示出版图像,表明图像所使用像素格式。如下表为常见的nodes描述:

from PIL import Image
im = Image.open("D:\\desktop\\ctf\\to_do.png")
print(im.mode) ## 打印模式属性


load方法

为图像分配内存并从文件中加载它(或者从源图像,对于懒操作)。正常情况下,用户不需要调用这个方法,因为在第一次访问图像时,Image类会自动地加载打开的图像。目前的版本,方法load()返回一个用于读取和修改像素的像素访问对象。这个访问对象像一个二维队列,如:

  pix = im.load()print pix[x, y]pix[x, y] =value

size属性

im.size ⇒ (width, height)
图像的尺寸,按照像素数计算,它的返回值为宽度和高度的二元组(width, height)。

from PIL import Image
im = Image.open("3d.jpg")
print(im.size)

from PIL import Image
im = Image.open("D:\\desktop\\ctf\\to_do.png")
print im.size[0]


new方法

使用给定的变量mode和size生成新的图像。Size是给定的宽/高二元组,这是按照像素数来计算的。对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值)。在版本1.1.4及其之后,用户也可以用颜色的名称,比如给变量color赋值为“red”。如果没有对变量color赋值,图像内容将会被全部赋值为0(为黑色)。如果变量color是空,图像将不会被初始化,即图像的内容全为0。这对向该图像复制或绘制某些内容是有用的。

from PIL import Image
im = Image.open("D:\\desktop\\ctf\\to_do.png")
n_im= Image.new("RGB", (128, 128), "#FF0000")
n_im.show()


解题脚本

from PIL import Image
im1 = Image.open("to.png")
im2 = Image.open("to_do.png")
p1 = im1.load()
p2 = im2.load()
w = im1.size[0]
h = im1.size[1]im = Image.new('RGB',(290,289))
p = im.load()for i in range(w):cnt = 0for j in range(h):if p1[i, j] != p2[i, j]:p[i,j] = (255,255,255)
im.show()

隐藏的信息(八进制转字符串)

日期:2020/02/08


得到字符串:

0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113

数字到7为止猜测是八进制,写个脚本转为字符串:

import re
import sys
s='0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113 '
a=re.findall('\d{3,}',s)
for i in a:sys.stdout.write(chr(int(i,8)))#V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K

将得到的字符串base64解码得到flag。

Aesop_secret(ps图层叠加)

日期:2020/02/07


我们的秘密是绿色的(新工具oursecret)

日期:2020/02/07


一,oursecret密码为绿色数字

二,zip爆破

三,明文攻击

四,伪加密

五,双重加密:栅栏密码,凯撒密码

pure_color(送分)

日期:2020/02/06


Stegsolve打开点右箭头得到flag。

Reverse-it(xxd,convert命令)

日期:2020/02/04


这道题的难点就在于发现文件内容是翻转的,我还特意看了看文件头,没找到对应的文件就没有多想,下次注意点。


方法一,复制十六进制数据,翻转。

s = "9DFF700DB6DAFC937263282222BDD218B425D4... ....FF8DFF"x = s[::-1]print x

python中[-1]、[:-1]、[::-1]、[2::-1]的使用方法
a=[1,2,3.4,5]
print(a[-1]) #取最后一个元素 [5]
print(a[:-1]) # 除了最后一个取全部 [ 1 2 3 4 ]
print(a[::-1]) # 取从后向前(相反)的元素 [ 5 4 3 2 1 ]
print(a[2::-1]) #取从下标为2的元素翻转读取 [ 3 2 1 ]
print(a[::-2]) #[5,3,1]

将翻转数据保存到winhex中,保存。



方法二,使用命令行。

xxd -p 文件名 | tr -d '\n' | rev | xxd -r -p > 更改后的文件名

1,|
| 表示管道,上一条命令的输出,作为下一条命令参数。

2,xxd命令
-p以一个整块输出所有的hex, 不使用空格进行分割。
-r 反转操作,将16进制专程2进制

3,tr命令
-d '\n '删除字符串中所有’ \n '空格。

4,rev命令
rev 将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。


打开是一张翻转的图片。


然后对称一下,使用命令:

convert -flop reversed reversed.jpg

convert命令详解:

convert -flip 上下翻转。
convert -flop 左右翻转。

要用convert命令还要先下载ImageMagick软件,使用命令apt-get install ImageMagick,但是我这里报错E:无法定位软件包 ImageMagick,百度了一下要在etc/apt 的sources.list 修改镜像源,这一更新更新了好久,,,
参考:https://blog.csdn.net/qq_42092076/article/details/88357387
更新之后还是没有解决问题,于是我在windows上安装一个imagemagick使用。
参考:Windows系统安装及初步使用ImageMagick

最后发现将 ImageMagick改为imagemagick小写的就可以了,,,,,,,,,晕

MISCall(git stash)

日期:2020/02/04


将文件拖进kali,更改文件名为abc,然后file abc查看文件类型。
然后 tar xjvf abc解压文件。

发现是拿到了.get目录,然后根据网上的方法知道了 git stash
然后运行脚本得到falg。

神奇的Modbus(送分)

日期:2020/02/04


题目说了Modbus,百度了一下是一个通讯协议。
先在包里搜索flag没有搜到,然后把Modbus协议追踪tcp流在里面找到了flag,但是还要加个o,,,

embarrass(送分)

日期:2020/02/04


直接搜索字符串得到flag。

Training-Stegano-1(送分)

日期:2020/01/25


直接用winhex打开得到flag。
# János-the-Ripper(ARCHPR爆破)
日期:2020/01/25


解压出来winhex发现仍是压缩文件,改后缀为zip,打开后是txt加密文件。
然后用ARCHPR爆破

Test-flag-please-ignore(16进制转字符)

日期:2020/01/25


解压后打开是一串字符。

666c61677b68656c6c6f5f776f726c647d

发现没有f以后的字符猜测是16进制,解密以后得到flag。

stage1(图片隐写,反编译)

日期:2020/01/25


下载附件,使用StegSolve打开,切换到左一视图时看到如下图片

扫描二维码得到一串十六进制数字

03F30D0AB6266A576300000000000000000100000040000000730D0000006400008400005A00006401005328020000006300000000030000000800000043000000734E0000006401006402006403006404006405006406006405006407006708007D00006408007D0100781E007C0000445D16007D02007C01007400007C0200830100377D0100712B00577C010047486400005328090000004E6941000000696C000000697000000069680000006961000000694C0000006962000000740000000028010000007403000000636872280300000074030000007374727404000000666C6167740100000069280000000028000000007307000000746573742E7079520300000001000000730A00000000011E0106010D0114014E280100000052030000002800000000280000000028000000007307000000746573742E707974080000003C6D6F64756C653E010000007300000000

从开头03F3可知时pyc文件,保存为1.pyc

python反编译,介绍一个在线python反编译网站:python反编译在线工具

def flag():str = [65,108,112,104,97,76,97,98]flag = ''for i in str:flag += chr(i)print flagdef flag():str = [65,108,112,104,97,76,97,98]flag = ''for i in str:flag += chr(i)print flag
flag()

最后要加一个flag(),调用函数,得到flag。

Hear-with-your-Eyes(音频隐写-频谱图)

日期:2020/01/27


下载好文件之后解压,发现里面有个没有后缀的文件,放到winhex里观察,文件头是1f8b0800,百度搜了搜发现是gzip文件的文件头,于是把后缀改为zip。打开里面有一首歌。
然后应该是音频隐写类的题目,上网搜了搜这类题怎么做,结果示例的第二题就是原题,,,
CTF中音频隐写的一些整理总结
用audacity 打开这个音频文件,然后调至频谱图,出现flag。

XCTF 攻防世界 MISC杂项 高手进阶区相关推荐

  1. 攻防世界的杂项高手题之神奇的Modbus

    攻防世界的杂项高手题之神奇的Modbus 继续开启全栈梦想之逆向之旅~ 这题是攻防世界的杂项高手题之神奇的Modbus 下载附件,又是流量分析pcapng包,用wireshark打开: . . (这里 ...

  2. xctf攻防世界 MISC高手进阶区 互相伤害

    1. 进入环境,下载附件 题目给的是一个文件,我们直接扔进kali中,发现是流量包,如图: 使用file命令查看该文件类型,发现也是提示是pcapng文件,如图: 2. 问题分析 提取数据 我们打开文 ...

  3. xctf攻防世界 MISC高手进阶区 3-11

    1.进入环境,下载附件 题目给的是一张猫猫png图片,如图: 2. 问题分析 kali中zsteg 我发现这个工具真的好用,如图: 如图,第一通道,rgb三色的lsb(least significan ...

  4. xctf攻防世界 MISC高手进阶区 打野

    1. 下载附件 题目给了一张bmp位图文件,尝试用StegSolve打开并查看,并没有什么发现,放入winhex中也没有什么内容,猜测可能需要需要进行StegSolve的Data Extract.但是 ...

  5. xctf攻防世界 MISC高手进阶区 saleae

    1. 进入环境,下载附件 题目给的一个压缩包,文件是saleae.logicdata文件,用Saleae软件打开,Saleae是一个逻辑分析工具,不仅可以记录数字和模拟两种信号,还可以解码 SPI.I ...

  6. xctf攻防世界 MISC高手进阶区 2017_Dating_in_Singapore

    1. 进入环境,下载附件 题目给了一串数据: 01081522291516170310172431-050607132027262728-0102030209162330-02091623020310 ...

  7. xctf攻防世界 MISC高手进阶区 Ditf

    1. 进入环境,下载附件 是一张美图: 没有其他提示信息,接着走. 2. 问题分析 StegSolve探索 使用StegSolve打开图片,发现图片巨长.联想想到之前做的一个题,使用winhex修改图 ...

  8. xctf攻防世界 MISC高手进阶区 Miscellaneous-300

    1. 进入环境,下载附件 题目给的是一个zip文件,但是带有密码,尝试放入winhex中,发现并不是伪加密. 2. 问题分析 没有提示,没有伪加密,但是打开压缩包如图: 发现压缩包还有压缩包,名字数字 ...

  9. xctf攻防世界 MISC高手进阶区 Miscellaneous-200

    1. 进入环境,下载附件 给的是txt文件,一堆数据,如图: 数据范围为0-255之间,且三个数据为一组,那么很容易联想到RGB图片的像素值. 2. 问题分析 我们通过代码创建一幅图,将每一行数据当做 ...

最新文章

  1. SAP Workload Monitor
  2. Win32 API之Setlocale函数配置地域化信息函数
  3. 正文处理命令及tar命令
  4. C语言 使用指针计算两个整数的和与差
  5. HTML+CSS+JavaScript复习笔记持更(六)——CSS3常用属性之文本
  6. 员工转正申请书_员工有了归属感 企业实现大发展!通机股份在党工共建中摸索经验...
  7. 漫画算法:无序数组排序后的最大相邻差值
  8. idea插件导出_Intellij IDEA 中我一直在用的几个插件
  9. 图像去模糊代码 python_用Keras搭建GAN:图像去模糊中的应用(附代码)
  10. BIOS中的分区工具
  11. Flutter AppBar 简述
  12. 几种影响软件可伸缩性的问题
  13. Qt实现职工信息管理系统
  14. 汽车电子ISO7637-2 5A/5B抛负载测试详解
  15. 配置paraview 服务器
  16. Java 验证码识别(1)使用 Tess4J 进行 OCR 识别
  17. 自己编写的android汉字转拼音类(超全字库)
  18. 计算机专业轻薄本还是游戏本,十大精品笔记本电脑(高端轻薄本和高端游戏本)...
  19. 奕新集团RAC 11g 生产库环境(待完善无图)
  20. 【JavaSE】逻辑控制

热门文章

  1. c语言组建怎样变成编译,c语言编译【处理流程】
  2. CentOS8国内镜像下载地址
  3. jquery-js 美化页面
  4. maya2018英文翻译_maya2018mac版如何改成英文?
  5. ALtera DE2开发板学习01
  6. 【特征选择】基于亨利气体溶解度优化算法求解二进制特征选择问题(HGSO)含Matlab源码
  7. 论文中出现的 cf. i.e. s.t. e.g. w.r.t. et al. etc等英文缩写是什么意思
  8. 计算机系过程控制专业毕业论文,计算机系毕业论文(范文).doc
  9. 以为女程序员的奋斗路程
  10. var和let的区别