Misc题目总结

目录

[WUSTCTF2020]girlfriend 

手机键盘隐写:

[GUET-CTF2019]zips

setup.sh文件的运行方法:

[MRCTF2020]千层套路

重复解zip加密压缩包脚本:

根据RGB坐标构造二维码脚本:

[DDCTF2018](╯°□°)╯︵ ┻━┻


[WUSTCTF2020]girlfriend 

打开附加,里面有一段音频

以为是摩斯密码,但记录下来发现也不对,看来其他大佬的wp了解到是 DTMF拨号音识别,声音特征是打电话输入号码的声音,可以使用在线网站解密

手机键盘隐写:

 

Detect DTMF Tones (dialabc.com)

 引用一位大佬博客中的图片帮助理解,原文在这里:(156条消息) BUUCTF:[WUSTCTF2020]girlfriend_末 初的博客-CSDN博客

 

999是9号键盘第3个数,以此类推,得到flag

999     --->   y
666     --->   o
88      --->   u
2       --->   a
777     --->   r
33      --->   e
6       --->   m
999     --->   y
4       --->   g
4444    --->   i
777     --->   r
555     --->   l
333     --->   f
777     --->   r
444     --->   i
33      --->   e
66      --->   n
3       --->   d
7777    --->   s

拿到flag 

[GUET-CTF2019]zips

拿到一个加密的压缩包文件,爆破解密得到密码

 解压出来一个加密压缩包

伪加密,将09修改为08,得到两个文件,一个是flag.zip文件,setup.sh文件,运行setup.sh文件

setup.sh文件的运行方法:

查看.sh文件

 在python中运行这行代码

每次运行时结果都不同,此段代码根据时间变化,使用掩码爆破,掩码范围猜测在1500000000.00到1700000000.00之间。 

得到密码 

[MRCTF2020]千层套路

打开文件,加密压缩包,尝试爆破密码,得到密码,就是文件名,解压后还有一个加密压缩包......后面会有超多加密压缩包,这样手解也不是解决办法,用脚本解密

重复解zip加密压缩包脚本:

import zipfile
name = '0573'
while True:
    fz = zipfile.ZipFile(name + '.zip', 'r')
    fz.extractall(pwd=bytes(name, 'utf-8'))
    name = fz.filelist[0].filename[0:4]
    fz.close()

得到1000个zip压缩包

 里面有一个qr.zip压缩包,解压发现是一系列RGB坐标,熟悉的255和0,构造二维码的嫌疑很大

上脚本,构造二维码

根据RGB坐标构造二维码脚本:

from PIL import Image
import os


file = open('qr.txt')
MAX = 200

picture = Image.new("RGB", (MAX, MAX))
for y in range(MAX):
    for x in range(MAX):
        string = file.readline()
        picture.putpixel([x, y], eval(string))  # 直接使用eval()可以转为元组
picture.show()

运行得到二维码解密

 扫码得到flag。

[DDCTF2018](╯°□°)╯︵ ┻━┻

附件给的是一个txt文本,看题目以为是颜文字加密,但看了一下,感觉不像

 txt文本中有一串16进制数据,两两分割转换成十进制数输出得到一串数据

def hex_to_decimal(hex_string):
    decimal_list = []
    hex_list = [hex_string[i:i + 2] for i in range(0, len(hex_string), 2)]

    for hex_num in hex_list:
        decimal_list.append(int(hex_num, 16))

    return decimal_list


hex_string = input("请输入16进制数据:")
decimal_list = hex_to_decimal(hex_string)
print("转换为十进制数据:", decimal_list)

得到数据:

212, 232, 225, 244, 160, 247, 225, 243, 160, 230, 225, 243, 244, 161, 160, 212, 232, 229, 160, 230, 236, 225, 231, 160, 233, 243, 186, 160, 196, 196, 195, 212, 198, 251, 185, 178, 178, 225, 226, 185, 185, 183, 180, 225, 180, 183, 227, 228, 179, 178, 178, 227, 230, 180, 179, 226, 181, 176, 182, 177, 176, 230, 225, 229, 225, 181, 253 

都是大于125的值,转为字符串肯定乱码,观察最后一个数值253与flag中最后一个字符'}'ascll码差值,‘}’的ascll码值为 125,相差128.将所有的数值都减去128,转换为字符串

#include<stdio.h>
#include<string.h>
int main(){
	char a[]={212, 232, 225, 244, 160, 247, 225, 243, 160, 230, 225, 243, 244, 161, 160, 212, 232, 229, 160, 230, 236, 225, 231, 160, 233, 243, 186, 160, 196, 196, 195, 212, 198, 251, 185, 178, 178, 225, 226, 185, 185, 183, 180, 225, 180, 183, 227, 228, 179, 178, 178, 227, 230, 180, 179, 226, 181, 176, 182, 177, 176, 230, 225, 229, 225, 181, 253};
    int i=0;
    for(i=0;i<strlen(a);i++){
    	a[i]-=128;
    	printf("%c",a[i]);
	}
	return 0;
} 

运行得到flag:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值