首页 > 其他分享 >1.25刷题记录

1.25刷题记录

时间:2023-01-27 00:22:44浏览次数:61  
标签:记录 text base64 flag 1.25 打开 data 压缩包 刷题

目录

1.[GUET-CTF2019]虚假的压缩包

打开附件 得到两个加密压缩包

image-20230125104311851

因为没有线索我就先从虚假压缩包下手了

用010 Editor 打开发现是伪加密 把09-00之后保存就能正常打开了

image-20230125104501541

得到了这个 上网搜索了之后得知这是:RSA算法

RSA算法原理(简单易懂) - insistYuan - 博客园 (cnblogs.com)

学习了一下 解出来明文是:5

所以压缩包密码就是:答案是5

打开压缩包获得一张图片和一段文本

image-20230125105449425

于是先分析图片

用010Editor打开图片

Snipaste_2023-01-25_10-56-31

jpg的图片却是png的文件头 于是把后缀名改为png

再次打开图片

image-20230125113729257

显示crc错误 于是我修改了一下宽高

改了几次都把图片改变形了 于是跑了个脚本

# -*- coding: utf8 -*-

import os
import binascii
import struct
misc = open("1.png","rb").read()

# 爆破宽
for i in range(1024):
	data = misc[12:16] + struct.pack('>i',i)+ misc[20:29]  #IHDR数据
	crc32 = binascii.crc32(data) & 0xffffffff
	if crc32 == 0x1670BAE6: #IHDR块的crc32值
		print(i)
		print("hex:"+hex(i))

# 爆破高		
for i in range(1024):
    data = misc[12:20] + struct.pack('>i',i)+ misc[24:29]
    crc32 = binascii.crc32(data) & 0xffffffff
    if crc32 == 0x1670BAE6:
        print(i)
        print("hex:"+hex(i))

image-20230125143137908

然后把高改了得到正常的图片

一张没卵用且会浪费你时间的图片

打开修改好的图片 显示了个异或

再根据另外一个文件可以得知应该是要将文本异或

然后又跑了个脚本

original = open("亦真亦假",'r').read()
flag = open("flag",'w')
for i in original:
    tmp = int(i,16)^5
    flag.write(hex(tmp)[2:])

跑完脚本得到一个名为flag文档

image-20230125155430092

导入到010Editor中 发现了zip的文件头

image-20230125155311787

涉及到一个知识点:doc文件本身也是一种zip

于是保存为docx

再次打开电脑可能会出现报错

image-20230125155833073

于是需要调一下配置 调完重启就可以正常打开了

(37条消息) Word打开文件错误提示用文本恢复转换器打开文件_ztnhnr的博客-CSDN博客_文本恢复转换器

搜索flag

image-20230125160109772

被隐藏了 于是更改一下颜色

image-20230125160205223

得到结果:flag{_th2_7ru8_2iP_}


2.[SWPU2019]Network

打开附件 里面就四种类型的数字:63/127/191/255

将其各自转换为二进制

00111111
01111111
10111111
11111111

只有前两位是变化的,这就是TTL隐写

脚本:取出前两位,重新组合,再以8位一组,转换为16进制字符,再将16进制字符转换为字符

import binascii
f=open('1.txt','r')
s=''
for i in f.readlines():
    if i == "63\r\n":
        a='00'
    if i == "127\r\n":
        a='01'
    if i == "191\r\n":
        a='10'
    if i == "255\r\n":
        a='11'
    s+=a
data=''
for i in range(0,len(s),8):
    data+=chr(int(s[i:i+8],2))
data=binascii.unhexlify(data)
print(data)

跑完脚本 保存为txt 在010中导入16进制

image-20230125165021970

然后显而易见这是个压缩包

image-20230125165055186

打开之后 发现需要密码 但是没有提示 所以我猜测是伪加密

改完之后打开

image-20230125165859160

得到base64文本

这是多次base解码套娃 找了个脚本跑了一下

# -*- encoding: utf-8 -*-
import base64

f = open('flag.txt','rb').read()
while True:
    f = base64.b64decode(f)
    if b'{' in f:
        print(f)
        break
    else:
        continue

image-20230125170413864

结果:flag{189ff9e5b743ae95f940a6ccc6dbd9ab}


3.[MRCTF2020]Hello_ misc

打开附件得到一个加密的压缩包和一个损坏的png图片

先分析图片:

用010Editor打开之后显示有

image-20230125170917108

于是在kali里面binwalk分析一下

image-20230125171145916

看到了有压缩包

直接foremost分离出来

打开需要密码

于是用Stegsolve查一下 在red0通道可得到一张图片

image-20230125173600964

于是save bin打开 得到密码

2

密码:!@#$%67*()-+

打开压缩包

image-20230125174054841

发现这就是上面刚做过的ttl隐写

再用上面的脚本跑一下

image-20230125174412559

rar-passwd:0ac1fe6b77be5dbe

所以这就是最开始压缩包的密码

打开压缩包得到新的压缩包 但是根据上一题的经验我得知这个压缩包一定也是docx

image-20230125174642903

于是改名字打开

全选把黑色字体改为红色之后得到下面这段base密码

image-20230125174841162

逐行base解码

脚本:

import base64

with open('flag.txt','r') as file:
    for i in file.readlines():
        line = str(base64.b64decode(i),'utf-8')
        print(line)

image-20230125175411367

隐隐约约感觉像是由0构成的形状 然后把1替换掉

import base64

with open('data.txt','r') as file:
    for i in file.readlines():
        line = str(base64.b64decode(i),'utf-8')
        print(line.replace('1',''))

image-20230125182940265

结果就是:flag{He1Lo_mi5c~}


4.[MRCTF2020]Unravel!!

打开附件得到一段音频、一张图片以及一个加密的压缩包

image-20230125183538837

先分析音频:

根据提示:看文件结尾

于是用010Editor打开拉到结尾

image-20230125183655916

解码:U2FsdGVkX1/nSQN+hoHL8OwV9iJB/mSdKk5dmusulz4=

image-20230125185426340

发现了:Salted__于是去搜索了一下

这个是通过openssl加密如果不带base 64就会出现Salted字段的头

再看base64的前几个字段U2Fsd确定是AES加密

然后去分析图片:

在kali里面binwalk分析一下

image-20230125184537065

于是直接foremost

得到下面这张图片

image-20230125184600222

明文是:Tokyo

应该是上面AES加密的密码

image-20230125185510773

明文是:CCGandGulu 这就是压缩包的密码

然后解压压缩包,得到音频文件,使用SilentEye进行解密得到flag

image-20230125190111487

结果是:flag{Th1s_is_the_3nd1n9}

5.[ACTF新生赛2020]music

打开附件获得一个m4a文件

用010Editor打开

文件异常而且发现了很多个的A1

image-20230125211148817

看了其他人的wp得知:对原文件进行了异或

于是:用010 Editor工具->十六进制运算->二进制异或对整个文件内容进行异或

image-20230125211328840

ctrl + s 保存 恢复文件

image-20230125211418761

再次打开文件就正常了

听内容得到flag{abcdfghijk}


6.[CFI-CTF 2018]webLogon capture

打开附件得到一个流量包

image-20230125215140977

打开流量包 追踪tcp流 发现了password

Snipaste_2023-01-25_21-53-22

搜索了一下得知:这是URL编码的密码

于是找了一个在线网站解码

网址:在线URL解码编码工具_蛙蛙工具 (iamwawa.cn)

image-20230125215655830

得到结果:flag{1ns3cur3_l0g0n}

7.[MRCTF2020]pyFlag

打开附件得到三张图片

image-20230125220925915

用010Editor分别打开这三张图片

拉到底部 发现了zip的文件头

以及其它提示Snipaste_2023-01-25_22-11-00

Snipaste_2023-01-25_22-11-48Snipaste_2023-01-25_22-12-41

按照提示将part1 part2 part3拼接到新的文件上

image-20230125221704526

然后ctrl+s保存

用ARCHPR爆破密码

image-20230125221833527

密码是:1234

打开压缩包

image-20230125221951128

根据提示应该使用的是下面这些base编码

base16 base32 base85

但是在线网站解不开

看了其他人的wp这需要跑一个脚本

#!/usr/bin/env python

import base64
import re

def baseDec(text,type):
    if type == 1:
        return base64.b16decode(text)
    elif type == 2:
        return base64.b32decode(text)
    elif type == 3:
        return base64.b64decode(text)
    elif type == 4:
        return base64.b85decode(text)
    else:
        pass

def detect(text):
    try:
        if re.match("^[0-9A-F=]+$",text.decode()) is not None:
            return 1
    except:
        pass
    
    try:
        if re.match("^[A-Z2-7=]+$",text.decode()) is not None:
            return 2
    except:
        pass

    try:
        if re.match("^[A-Za-z0-9+/=]+$",text.decode()) is not None:
            return 3
    except:
        pass
    
    return 4

def autoDec(text):
    while True:
        if b"MRCTF{" in text:
            print("\n"+text.decode())
            break

        code = detect(text)
        text = baseDec(text,code)

with open("flag.txt",'rb') as f:
    flag = f.read()

autoDec(flag)

跑完脚本得到flag

image-20230125222808096

flag{Y0u_Are_4_p3rFect_dec0der}

标签:记录,text,base64,flag,1.25,打开,data,压缩包,刷题
From: https://www.cnblogs.com/zhoujiaff/p/17068431.html

相关文章

  • 1.26刷题记录
    目录1.[MRCTF2020]不眠之夜2.[GKCTF2021]excel骚操作3.[UTCTF2020]FileCarving4.[QCTF2018]X-man-Aface5.[watevrCTF2019]EvilCuteness6.粽子的来历7.hashcat1.[MRC......
  • 1.13刷题记录
    目录1.[BSidesSF2019]zippy2.[RCTF2019]draw3.[UTCTF2020]basic-forensics4.[ACTF新生赛2020]明文攻击5.[WUSTCTF2020]spaceclub6.[UTCTF2020]zero7.二维码1.[BSidesSF201......
  • js开发记录
    1.position:absolute 可以使div悬浮,用 left/right/top 可以放在具体的位置;2.w20width:20px;(快捷键,字母缩写+数字);3.引入外部js包本地和服务器地址要一致且正确;4. ......
  • 记录打pwn的第二天
    buuctf_pwn1.25warmup_csaw_2016法一:用file命令查看文件拖到ida,发现了gets(v5),v5的长度只有0x40,即可用栈大小只有64字节和上一个题rip一样,gets()函数并没有限......
  • SQL提取表中某列字符长度为2的所有记录
    有一个表WB,包含两列character和wb //表中数据截图如下从图中可以看出wb列的各行数据的长度是不一样的,现在我想把wb列中长度为二,即只有两个字符的所有记录给提取出来,我们......
  • C#输出SQL 2005表中所有记录!...
      主要代码如下:    //连接字符串stringstrConn="userid=sa;password=123456;initialcatalog=MyDb;Server=192.168.47.144,1433;ConnectTimeout=10";......
  • 函数指针+返回数组指针遇到的坑的记录
    在手熟函数指针时,偷懒用了前面测试返回数组指针写的函数,想着比书上更复杂可以加深理解,没想到碰上很傻的bug还想了半天。1autogetArr3()->int(*)[5]{2intarr......
  • 算法--2023.1.25
    1.力扣122--买卖股票的最佳时机2classSolution{publicintmaxProfit(int[]prices){intn=prices.length;int[][]dp=newint[n][2];......
  • 闲话 23.1.25
    杂题[集训队作业2019]青春猪头少年不会梦到兔女郎学姐若干个正整数排成一个序列,其中数字\(i\)的出现次数为\(r_i\),对于每一个这样的序列,定义他的权值如下:把这个序......
  • 每日一题1.25
      我的思路:把&(x)直接当作x带入f(x)然后求出&(x)=根号ln(1-x);作用域是x<1;复合函数求定义域:  x的定义域做错了,因为e的x次方是单调的增函数,而&(x)的平方......