解题思路:难易程度易:
这一题比较简单,使用winhex就可以得到最后的答案
(为什么那么简单的题目我要想的那么复杂,导致现在开始怀疑自己QAQ)
根据题目的描述就能够想到最后的结果所在地(拉到最后的地方就会得到)
这个是ASCII码,使用ASCII码表对照一下就会得到最后的答案:
最后得到答案:flag{pE3kQzmaMN}
8:真是动图
100
真的是动图,相信我啊,我就把password藏里面了
答案格式key{xxx}
解题思路:难易程度:中等(之所以评为中等,并不是因为这一题难,而是因为不容易读
至少我是这样认为的QAQ)
首先:需要下载图片,使用百度云,360浏览器,以及所有可以使用链接下载的工具都可以了:
然后:就会发现图片打开出错
放进winhex中看一下就会发现,文件头缺失
加上GIF8就会保存之后就会得到:
这是一个动图:使用steglove打开发现,看的不清楚,使用2345看图王吧
毕竟这个可以一帧一帧的看
把灰色的部分读取就会得到base64编码的东西:
使用在线工具:
就会得到最后的答案:
key{catch_the_dynamic_flag_is_quite_simple}
9:错误压缩
150
把我的女神压缩就忍了,竟然还压缩错了!
答案格式:SCTF{xxx}
解题思路:总的来说这一题,还是比较难的,可能是自己会的太少,所以这样感觉的
不过这一题还是会学习到许多新的知识的(HHH)。
首先:我们会使用 binwalk 看一下有没有隐藏的文件或者压缩包(但是都没有QAQ)
使用stegolve 也没有任何信息(QAQ)
然后:上网搜一下看看有没有大佬写过这个题目的wp(HHH很聪明呀!!没有什么都没有QAQ)
自己解决吧(自己又上网搜一些关于图片隐写的解题思路,发现pngcheck没有使用过)
使用一一下吧(但是没有工具,自己又蒙蒙的上网找工具(http://www.libpng.org/pub/png/apps/pngcheck.html)
这个工具的使用方法比较简单(具体使用方法,我会在下面解题思路中详细写出来的)
使用cmd(这个cmd今天不知道怎么了就是进不了文件夹里面的内容了,找到一位大佬用另一种方法进入的(QAQ))
我们需要把图片和pngcheck放在同一个文件夹里面
然后使用cmd:
可以看到,正常的块的length是在65524的时候就满了,而倒数第二个IDAT块长度是45027,
最后一个长度是138,很明显最后一个IDAT块是有问题的,因为他本来应该并入到倒数第二个未满的块里
看到下面的数据和上面的不同,关键点就是在这个地方
使用winhex找到(如下图所示的红线的位置)
查找78 9C文件头标志,这个地方需要使用python进行处理就会得到:
import zlib
import binascii
IDAT =("789C5D91011280400802BF04FFFF5C75294B5537738A21A27D1E49CFD17D
B3937A92E7E603880A6D485100901FB0410153350DE83112EA2D51C54CE2E585B15A
2FC78E8872F51C6FC1881882F93D372DEF78E665B0C36C529622A0A45588138833A1
70A2071DDCD18219DB8C0D465D8B6989719645ED9C11C36AE3ABDAEFCFC0ACF023E77
C17C7897667").decode("hex")
result = binascii.hexlify(zlib.decompress(IDAT))
print result
就会得到:
使用conventer进行hex转化就会得到:
如果ctf做的比较多就会发现,关于0101:
(1)有可能代表的是ASCII码
(2)有可能是二维码:0表示的是黑色,1表示的是白色
关于这个里面的0101,一共有625个,正好是25的平方
借鉴一段代码:
import Image
MAX = 25
pic = Image.new("RGB",(MAX,MAX))
str = "11111110001000011011111111000001011100101101000001101110101000000000101110110
111010010000000010111011011101011101101001011101100000101010110110100000111111110101
010101011111110000000010111011100000000110100110000010100111011011110101010010000111
000000000001010000000010010011010001001110011110111001111000011101111100011001010001
100111000010101000110100011110101100000101000101100000110111011001000011100111001000
010111111101000000001101010010001111011111110111000011010110111000001000011001100011
110101110100011010011111000010111010110001110100111001011101001001110110110001100000
10110001101000110001111111011010110111011011"
i=0
for y in range (0,MAX):
for x in range (0,MAX):
if(str[i] == ‘1‘):
pic.putpixel([x,y],(0,0,0))
else:
pic.putpixel([x,y],(255,255,255))
i = i+1
pic.show()
pic.save("flag.png")
这个需要安装Image库
运行之后就会得到:
使用手机或者在线工具都可以,但是我使用的是QR Research
就会得到答案:
注意flag的格式,以及需要看清0和o的区别,1和I的不同
10:模糊的图片
100
p图大神请帮我把模糊的图片弄清楚,答案格式:flag{xxxx}
首先:看到题目
”p图大神请帮我把模糊的图片弄清楚“
这一句已经很清楚的知道需要使用ps以及其它图片处理工具进行锐化处理
这个地方可以使用图片处理工具有:美图秀秀,ps,光影魔术手
(我比较推荐使用光影魔术手,没有广告)
几个常规的处理技巧
经过处理之后就会得到:
或者使用python:
#coding:utf-8
import Image
img = Image.open(‘ifs.bmp‘)
X = img.size[0]
Y = img.size[1]
print X,Y
for i in range(X-2):
for j in range(Y-2):
a = img.getpixel((i,j))[0]+img.getpixel((i,j))[1]+img.getpixel((i,j))[2]
b = img.getpixel((i,j+1))[0]+img.getpixel((i,j+1))[1]+img.getpixel((i,j+1))[2]
c = img.getpixel((i,j+2))[0]+img.getpixel((i,j+2))[1]+img.getpixel((i,j+2))[2]
if (a > b and c > b) or (a < b and c < b):
pass
else:
img.putpixel((i,j),(255,255,255))
img.show()
看图得key: At10ISCC421ZLAPL
11:IHDR
100
苹果拍照很美,但是我要拍的东西怎么老是拍不出来