WriteUp
- 巴基斯坦_听音乐
- 塔吉克_扫一扫
- 印尼_find_the_key
- 安哥拉_一步一步
- 北韩_经过多少次加密
- 日本_hundouluo
- 伊朗_爆破
- 利比亚_密码多简单
- 越南_真的加密了?
- 埃塞俄比亚-隐写术
- 秘鲁_源代码给你又如何
涨姿势
- 坦桑尼亚-知己知彼
巴基斯坦_听音乐
原题
解题思路
简单音频隐写题在波形,频谱,高音等找线索
WriteUp
选择频谱图,找到答案
塔吉克_扫一扫
原题
解题思路
先扫了再说,扫完出现一串数字
504B03041400000808002FB1294AE64036D40F000000
0D00000005000000312E7478744B4B4A2E49AB2ECFCC
CB48ADA80500504B01023F001400000808002FB1294A
E64036D40F0000000D00000005002400000000000000
2000000000000000312E7478740A00200000000000010
01800EDEFA1FD816AD201B350D4E8816AD201B350D4E
8816AD201504B05060000000001000100570000003200
00000000
很明显是zip格式的数据
WriteUp
HxD新建文件,将数字串复制进去,保存
保存的文件扩展名改为 .zip,打开得flag
印尼_find_the_key
原题
解题思路
输入正确的字符串才会输出flag,在没有源代码的情况下谁知道(出题人知道)要输入什么?所以关键不在输入。想一下可以知道flag必定是已经在源代码中的,那么是不是可以反编译直接在堆栈中找flag呢?
WriteUp
将exe拖到C32Asm里面
往下找到flag即可
安哥拉_一步一步
原题
解题思路
整个GIF看完发现其中某帧很特别,那就一帧一帧的找到特别那帧
WriteUp
拖入PS中一帧一帧铺开,找到特别那帧即可
北韩_经过多少次加密
原题
解题思路
很明显是base64加密,递归解密
WriteUp
import base64
import re
file = open('1.txt','r')
str1 = file.read()
str1 = base64.b64decode(str1)
str2 = str(str1,'utf-8')
while re.match('fbctf',str2)==None :
count = len(str2)%4 #此处有个小坑,python进行base64解码时要在末尾补齐 = 号
if count!=0:
str2 += ("="*(4-count))
str1 = base64.b64decode(str2)
str2 = str(str1, 'utf-8')
print(str2)
日本_hundouluo
原题
解题思路
模拟器运行以下,说不定要通关才有flag呢?
WriteUp
拖入模拟器中,你说那个是不是flag?
伊朗_爆破
原题
解题思路
就按照题目的意思办吧,爆破CRC32
WriteUp
import binascii
real = 0x56EA988D
for y in range(1000,9999):
if real == (binascii.crc32(bytes(str(y),'utf-8')) & 0xffffffff):
print(y)
print('End')
利比亚_密码多简单
原题
解题思路
这三只松鼠一看就不是好鼠,居然聚众赌博。。。
还是先HxD看下,不是FF D9结尾而且还有莫名其妙的字符串?
WriteUp
HxD发现异常,可以确定图片包含多个文件
Binwalk分析
发现包含Zip文件,不过文件头缺失,补上去看看
文件头缺失很可能是50 4B的缺失,那么搜素14 00看看哪里的50 4B不见了
发现一个key:mimaduojiandan 并且14 00 前面的 50 4B被替换成61 6E
从被替换处往下全选,新建文件粘贴进去然后保存,改后缀为Zip,打开
密码很明显就是刚才那个key
越南_真的加密了?
原题
解题思路
懒得放到HxD里面了,直接改后缀为Zip看看吧,看题目名就像是伪加密
WriteUp
改后缀后发现有jpg并且解压需要密码,直接按伪加密解决
提取图片出来即可
埃塞俄比亚-隐写术
解题思路
Stegsolve 和 HxD一顿操作打完收工
WirteUp
先用Stegsolve打开,左看看右看看(左右翻页),抓到半个flag(半个?)
flag都提示是一半了,再仍HxD里看看好了
发现压缩文件的标志和flag.txt,那好,改后缀为.zip打开,拿到另一半flag
秘鲁_源代码给你又如何
原题
解题思路
先爆破Zip密码,拿到源代码再分析要输入的字符串(真的是这样?)
WriteUp
Ziperello爆破密码,纯数字秒破
把能看的都看看
果然没有那么简单的,再看看源代码的图片
分析源代码可以知道,buf,check和buf2在堆栈中的空间是连续的。利用strcpy()的长度漏洞可以用输入参数覆盖后面的check和buf2的内存空间,从而使得check和buf2变成我们定义的数据,这样就能通过check和buf2前8个字符的判断顺利拿到flag
前面的分析很有道理的样子,可是我怎么拿到压缩包里的程序呢?
一开始解压出来三个文件,怎么看都是那张图片比较可疑,扔进HxD里看看
果然吧,顺利拿到密码解压出程序,随便输入下看看
可以发现确实是覆盖了check,那么这样把buf2也覆盖就ok了不是么?试试
这个时候你发现问题了么?如果没有就再想想
问题在于int 是4个字节而char 是1个字节,就是说A只是占了check的最低位字节还有三个字节需要用0填充,但是你输入不了ASCII为0的字符,那么后面三个字节就无法覆盖,你也无法跳过check的内存空间直接覆盖buf2的内存空间,所以直接输入法无解
所以老办法,扔进C32Asm查找字符串
坦桑尼亚-知己知彼
解题思路
根据提示猜想是明文攻击
WriteUp
利用AZPR进行明文攻击,先根据压缩包内的提示将BurpLoader.jar用好压压缩。然后将原文件,好压压缩文件拖入AZPR相应位置,选择文本攻击
提示没有找到密码
不管,直接确定保存
直接打开UnEncrypted.zip内的flag.txt即可
涨姿势点
明文攻击的方式,大概的原理和应用
备注
为什么要用好压压缩才行呢?(winrar亲测不行)