HBCTF——WriteUp&&涨姿势(2)

WriteUp

  1. 巴基斯坦_听音乐
  2. 塔吉克_扫一扫
  3. 印尼_find_the_key
  4. 安哥拉_一步一步
  5. 北韩_经过多少次加密
  6. 日本_hundouluo
  7. 伊朗_爆破
  8. 利比亚_密码多简单
  9. 越南_真的加密了?
  10. 埃塞俄比亚-隐写术
  11. 秘鲁_源代码给你又如何

涨姿势

  1. 坦桑尼亚-知己知彼

巴基斯坦_听音乐

原题

这里写图片描述

解题思路

简单音频隐写题在波形,频谱,高音等找线索

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了不是么?试试

这里写图片描述

这个时候你发现问题了么?如果没有就再想想
问题在于int4个字节而char1个字节,就是说A只是占了check的最低位字节还有三个字节需要用0填充,但是你输入不了ASCII为0的字符,那么后面三个字节就无法覆盖,你也无法跳过check的内存空间直接覆盖buf2的内存空间,所以直接输入法无解
所以老办法,扔进C32Asm查找字符串

这里写图片描述


坦桑尼亚-知己知彼

原题

这里写图片描述

这里写图片描述

解题思路

根据提示猜想是明文攻击

WriteUp

利用AZPR进行明文攻击,先根据压缩包内的提示将BurpLoader.jar用好压压缩。然后将原文件,好压压缩文件拖入AZPR相应位置,选择文本攻击

这里写图片描述

提示没有找到密码

这里写图片描述

不管,直接确定保存

这里写图片描述

直接打开UnEncrypted.zip内的flag.txt即可

这里写图片描述

涨姿势点

明文攻击的方式,大概的原理和应用

备注

为什么要用好压压缩才行呢?(winrar亲测不行)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值