2021-11-17 学习日记

论文进度比较紧,最近刷题太少了。

1.Bugku刷题

多种方法解决

给的exe程序用exeinfope扫一下。


1-1

base64编码的,打开notepad++发现是个图片用base64编码。
还原之后是个二维码,在线扫一下就出flag。

闪的好快

gif中包含多个二维码,需要一个一个扫过去。
分解gif可以用StegSolve自带的Frame Browser模块。

FileStoragedat

找个DAT解密工具即可。

where is flag 番外篇

key.rar中有解压密码,具体做法是用13个原txt文件大小,减去压缩后文件大小,再当做ascll码进行转码,得到key,然后从出师表.rar中解压出一个图片。
用notepad++打开图片,可以搜索到含有flag的字符串,但这并不是flag。

flag in here {LjFWBuxFNTzEWv6t2NfxjNFSH1sQEwBt5wTTLD1fJ}
相比 Base_64,Base_58 不使用数字 “0“,字母大写“O“,字母大写 “I“,和字母小写 “l“,以及 “+“ 和 “/“ 符号,比Base64共减少6个字符,故称着Base58。

对括号内的字符使用base58解码即可。

come_game

打开游戏随便玩一下,然后esc推出。会生成两个文件,使用notapad++进入save文件修改关卡数位即可。

白哥的鸽子

使用winhex打开,发现最后有一串疑似flag的字符,但是顺序是乱的。

fg2ivyo}l{2s3_o@aw__rcl@

可以看出,明文字符没有改变,只是顺序被打乱了,那就应该是ctf中经常会出现的栅栏密码。
使用bugku在线工具里的栅栏密码进行枚举解密。


1-2

解密结果中第二个最像flag,尝试了一下,去掉最后的两个@就是正确的falg。

linux

既然题目叫linux,那就放到kali系统里做吧。
解压压缩包,然后在命令行中cat flag,就能看到了。
直接打开文件查看是不行的,因为里面充斥着大量的不可见字符。

简单套娃

使用winhex查看,文件头中有photoshop修改过的标识,所以此题应该是在图片中做文章。使用binwalk可以知道图片中还另外包含一个图片,但是不能直接分离出来。所以可以想到此图片可能包含多个图层。
使用winhex打开,搜索文件头,可以搜到两个,从第二个文件头到末尾复制一下,保存为另一个jpg文件,使用Stegsolve的img combine功能即可。
有点费眼睛。


1-3

split_all

文件头残缺,010会提示到第35个字节是错误的,看到后边的"89a"基本可以确定是gif文件,所以将头补全为"GIF89a"。
然后再往下看,可以看到许多块图片,所以要将gif分离。百度搜一个在线分离器即可。
不过很费眼睛。。。

放松一下吧

先过第一关,然后改存档到最后一关,得到解压密码。

happy_i_wanna

1-4

base的老大不就是base100么,直接解码。


1-5

接下来就是这个图片的问题。需要使用到F5隐写工具F5-steganography。
在安装好F5-steganography的kali中使用命令

java Extract -p 66666666 /root/桌面/你需要刷新.jpg

即可在output文件中得到flag。

隐写3

明显图片高度有问题,使用tweakpng打开,修改高度即可。
这里推荐一下T佬的脚本

//python3-还原图片真实高度
import binascii
import struct
import sys
file = input("图片地址:")
fr = open(file,'rb').read()
data: bytearray = bytearray(fr[0x0c:0x1d])
crc32key = eval('0x'+str(binascii.b2a_hex(fr[0x1d:0x21]))[2:-1])
#原来的代码: crc32key = eval(str(fr[29:33]).replace('\\x','').replace("1b'",'0x').replace("'",''))
n = 4095
for w in range(n):
    width = bytearray(struct.pack('>i', w))
    for h in range(n):
        height = bytearray(struct.pack('>i', h))
        for x in range(4):
            data[x+4] = width[x]
            data[x+8] = height[x]
        crc32result = binascii.crc32(data) & 0xffffffff
        if crc32result == crc32key:
            print(width,height)
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            fw = open(file+'.png','wb')
            fw.write(newpic)
            fw.close
            file.close()

T佬的ctf导航

zip伪加密

对压缩包的头部作出修改即可。


1-6

No one knows regex better than me

正则表达式这块我确实功底比较弱啊。

构造payload为

?zero=ZmxhZw==&first=oror|.php

你可能感兴趣的:(2021-11-17 学习日记)