Polar靶场-MISC通关笔记

0和255

得到字符串MD5加密套上flag

题目

# -*- coding = utf-8 -*-
# @software:PyCharm
from PIL import Image
image = Image.open('flag.png')   #flag.png分辨率为33*33
width = image.width
height = image.height
image_list = []
for x in range(height):
    scanline_list = []
    for y in range(width):
        pixel = image.getpixel((y, x))
        scanline_list.append(pixel)
    image_list.append(scanline_list)
print(image_list)
[[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 255, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 0, 255, 255, 0, 255, 0, 0, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 0, 0, 255, 255, 0, 0, 0, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 0, 0, 255, 0, 0, 255, 0, 0, 0, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 0, 255, 255, 255, 0, 255, 255, 0, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 255, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 255, 255, 255, 0, 255, 255, 0, 255, 0, 255, 0, 255, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 0, 255, 255, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 0, 255, 255, 0, 255, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 0, 0, 255, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 255, 255, 0, 0, 255, 0, 0, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 255, 0, 255, 255, 0, 0, 255, 255, 255, 0, 255, 0, 0, 0, 0, 255, 0, 0, 255, 0, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 0, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 255, 0, 0, 255, 255, 0, 255, 255, 255, 255, 255], [255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 0, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0, 255, 0, 255, 255, 255, 0, 0, 255, 0, 255, 255, 255, 255, 255], [255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 255, 255, 0, 255, 0, 255, 0, 255, 255, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, 255, 255, 255, 0, 255, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 0, 255, 255, 255, 0, 0, 255, 255, 255, 0, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255, 255, 0, 255, 0, 255, 255, 255, 0, 255, 0, 0, 0, 255, 0, 255, 255, 255, 255], [255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 0, 255, 255, 0, 255, 0, 0, 255, 255, 0, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 0, 0, 0, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]]

我的解答:

根据题目脚本可知,这是将图片像素转换成对应数字保存到列表中。

而且,可知flag.png的分辨率是33*33。

运行结果已经给出,接下来就是将数字转换成对应的图片。

观察结果可发现数据只有0和255,想到01二维码

为了方便将运行结果处理一下:将255全部替换为1,并删除其他字符。

根据注释得知图片为33*33,将数据列为33*33。

111111111111111111111111111111111

111111111111111111111111111111111

111111111111111111111111111111111

111111111111111111111111111111111

111100000001000010001100000001111

111101111101011010011101111101111

111101000101100110001101000101111

111101000101001001000101000101111

111101000101011111111101000101111

111101111101011101101101111101111

111100000001010101010100000001111

111111111111100011111111111111111

111111101101111000011110001001111

111111101110010000111001110001111

111101011101101010100111111001111

111111100110001100011111011001111

111110110100111111110001111011111

111110011011110000101100100001111

111101101100111010000100100101111

111110000110111000110010011011111

111100011101000010000000000101111

111111111111000010010111001011111

111100000001110000110101011001111

111101111101111010000111010101111

111101000101111000110000000011111

111101000101011100111010010011111

111101000101111101011101000101111

111101111101101001101000111111111

111100000001100011101110110001111

111111111111111111111111111111111

111111111111111111111111111111111

111111111111111111111111111111111

111111111111111111111111111111111

可以看出来图片大致为一个二维码。

exp:

from PIL import Image
MAX = 33  #每行每列数
#二维码大小
pic = Image.new("RGB", (MAX, MAX))
str = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100000001000010001100000001111111101111101011010011101111101111111101000101100110001101000101111111101000101001001000101000101111111101000101011111111101000101111111101111101011101101101111101111111100000001010101010100000001111111111111111100011111111111111111111111101101111000011110001001111111111101110010000111001110001111111101011101101010100111111001111111111100110001100011111011001111111110110100111111110001111011111111110011011110000101100100001111111101101100111010000100100101111111110000110111000110010011011111111100011101000010000000000101111111111111111000010010111001011111111100000001110000110101011001111111101111101111010000111010101111111101000101111000110000000011111111101000101011100111010010011111111101000101111101011101000101111111101111101101001101000111111111111100000001100011101110110001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"

i=0
for y in range (0,MAX):
    for x in range (0 ,MAX):
        if(str[i] =="0" ):
            pic.putpixel([x,y],(255, 255, 255))
        else:
            pic.putpixel([x,y],(0, 0, 0))
        i = i+1
pic.show()
pic.save("flag.png")

运行后扫描二维码,结果MD5加密。

flag{0f46d4b056acb49f06b1090bab56189d}

01

题目

一个加密压缩包和

1111111011111001001111111
1000001000000001101000001
1011101000100010101011101
1011101010011110001011101
1011101001110010101011101
1000001000111001001000001
1111111010101010101111111
0000000000110001000000000
0010111011011101010001001
1110100111100111010101001
0110001100010000110111011
0000100100001010111100010
0001001111110100110001001
0001000110000101110101010
1001111000010111101011011
0101010001010010100000010
1001001011100111111111001
0000000011011100100010001
1111111001100010101011011
1000001011111001100011000
1011101011001010111111000
1011101000001110010111010
1011101011001000111110101
1000001001101001001110010
1111111000010001000011011

我的解答

跟上题一样,数据为25*25

from PIL import Image
MAX = 25  #每行每列数
#二维码大小
pic = Image.new("RGB", (MAX, MAX))
str = "1111111011111001001111111100000100000000110100000110111010001000101010111011011101010011110001011101101110100111001010101110110000010001110010010000011111111010101010101111111000000000011000100000000000101110110111010100010011110100111100111010101001011000110001000011011101100001001000010101111000100001001111110100110001001000100011000010111010101010011110000101111010110110101010001010010100000010100100101110011111111100100000000110111001000100011111111001100010101011011100000101111100110001100010111010110010101111110001011101000001110010111010101110101100100011111010110000010011010010011100101111111000010001000011011"

i=0
for y in range (0,MAX):
    for x in range (0 ,MAX):
        if(str[i] =="0" ):
            pic.putpixel([x,y],(255, 255, 255))
        else:
            pic.putpixel([x,y],(0, 0, 0))
        i = i+1
pic.show()
pic.save("flag.png")

运行后扫描二维码得到压缩包密码

p@ssw0rd!

解压得到

~呜喵喵喵喵呜啊喵啊呜呜喵呜呜~喵喵~啊喵啊呜喵喵~喵~喵~呜呜喵呜啊喵喵喵呜啊呜~啊呜喵呜呜啊呜~~啊喵啊呜喵喵~喵~喵~呜喵呜呜~喵喵喵呜啊喵呜啊呜喵呜呜啊呜呜~啊喵啊呜喵喵~喵~喵~呜喵呜~~喵喵喵呜呜呜呜啊呜喵呜呜啊呜喵喵啊喵啊呜喵喵~啊~喵~呜喵呜喵啊喵喵喵呜啊喵呜呜呜喵呜呜~喵啊~啊喵啊呜~呜喵呜~喵~呜呜喵呜呜喵喵喵呜啊喵呜呜呜喵呜呜啊呜~喵啊喵啊呜~呜啊~~喵~呜呜喵呜喵喵喵喵呜呜呜啊~呜喵呜呜啊呜啊~啊喵啊呜喵喵~呜~喵~呜喵呜~~喵喵喵呜呜呜呜~呜喵呜呜啊呜~啊啊喵啊呜喵喵喵喵~喵~呜喵呜喵~喵喵喵呜呜呜呜呜呜喵呜呜~喵~喵啊喵啊呜~呜喵~~喵~呜呜喵呜喵喵喵喵呜呜呜啊呜呜喵呜呜~呜呜喵啊

一眼兽言兽语,在线解码http://hi.pcmoe.net/roar.html

flag{8a8c0a039c3bd6fb50e84b047e42e8e6}

100RGB

题目

🐯🐩🐣🐮🐨🐣🐭🐭
🐨🐧🐩🐣🐨🐧🐯🐣🐰🐮
🐨🐧🐪🐣🐨🐩🐪🐣🐭🐬
🐨🐨🐧🐣🐫🐰🐣🐨🐧🐰
🐰🐮🐣🐫🐰🐣🐨🐨🐬
🐪🐩🐣🐰🐬🐣🐰🐮
 🐨🐨🐫🐣🐬🐨🐣🐰🐬
🐰🐰🐣🐨🐨🐮🐣🐫🐪
🐨🐧🐨🐣🐨🐩🐬🐣🐧

我的解答

base100解码

82,71,66102,108,97103,123,65110,49,10997,49,11532,95,97114,51,9599,117,43101,125,0

根据ASCII码可得到真实的ASCII码。

82,71,66,102,108,97,103,123,65,110,49,109,97,49,115,32,95,97,114,51,95,99,117,43,101,125,0

十进制转ASCII得到

RGBflag{An1ma1s _ar3_cu+e}

提交时把RGB去掉

broken_hash

题目

import hashlib
rar_pwd = '????' # letters+digital
rar_pwd = hashlib.md5('????'.encode()).hexdigest()

一张png

我的解答

010发现图片末尾存在flag

kali分离得到压缩包并且提示

7bf21a26cd6

结合题目代码知道密码是字母+数字

而压缩包提示给出了部分哈希值

exp:

# 残缺的哈希值 4位数字加字母
import string, re, hashlib, sys
# string.ascii_uppercase 所有大写字母
# string.ascii_lowercase 所有小写字母
# string.ascii_letters 所有字母
# string.digits 所有数字
# 将哈希值所有可能的元素作为一个字符串赋值给 dic
dic = string.ascii_letters + string.digits

for q in dic:
    for w in dic:
        for e in dic:
            for r in dic:
                test_str = str(q) + str(w) + str(e) + str(r)
                flag = hashlib.md5(test_str.encode()).hexdigest()
                # 如果字符串匹配到 "部分字符串",则输出
                if(re.findall('7bf21a26cd6(.*?)',flag)):
                    print(flag)
                    sys.exit()
#7bf21a26cd627170e0e05ceee551c044
#H3lo

使用密码7bf21a26cd627170e0e05ceee551c044解压得到

flag{dbee4535f4853a3adc9ac3bbe1358819}

docx隐写

我的解答

打开文件发现flag部分

全选后修改颜色发现开头

还差一个末尾,重命名文件后缀为zip解压,找到word文件夹下的txt文件,里面就是最后一段。。。

flag{I_be1ieve_y0u_Can_flnd_+h3m}

LSB

题目

我的解答

直接梭

flag{172cadb2fd033ebb1d4e2fc70601c2ca}

大礼包

题目给了压缩包有密码,提示:

有很多数字,不止6位呢

直接爆破得到

9635421

打开是图片

010发现末尾base编码

base32+64解码得到

sn{bvr1_0yytcyp_fp0}

栅栏解码+凯撒解码

flag{police_1s_c00l}

超级简单的流量

给了一个流量包,这个太简单了很符合题目名字

直接追踪TCP流2拿到flag

flag{da73d88936010da1eeeb36e945ec4b97}

二维码

题目给了一张图片,010打开得到

一眼丁真base64转图片

扫码即可

flag{ef72c9101bafbb9b44d97e066a8e4d0a}

爆破鬼才

题目

我的解答

010打开存在压缩包

kali分离把压缩包拿出来

题目都说了爆破,那我们就爆破呗!纯数字哈哈哈!!

72064

flag{96a6781aaef3de39566d951466a0cc1f}

可爱的冰墩墩

题目

我的解答

不用试图片里的flag肯定是假的。。

010发现尾部有压缩包,kali分离出来,然后是一个pyc文件,压缩包提示

密码是小写字母

直接爆破,笑了,按长度依次增加暴了好久没结果,因为根本不知道小写字母长度呀!!

看看图好好好密码就是bingdundun

然后在线反编译

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.7

ciphertext = ''
flag = ''
for i in range(len(flag)):
    i = ord(flag[i]) + 10
    ciphertext.append(str(i))

print(ciphertext[::-1])
ciphertext = [
    '62',
    '60',
    '65',
    '108',
    '111',
    '60',
    '109',
    '111',
    '59',
    '109',
    '107',
    '107',
    '107',
    '107',
    '63',
    '64',
    '111',
    '60',
    '64',
    '109',
    '60',
    '108',
    '59',
    '60',
    '109',
    '64',
    '66',
    '61',
    '111',
    '109',
    '65',
    '61']

可以看出程序是将flag中的字符串的每一个字符转成ASCII码并加上10,再以字符的方式逆序输出,就是ciphertext

exp:

ciphertext = ['62', '60', '65', '108', '111', '60', '109', '111', 

          '59', '109', '107', '107', '107', '107', '63', '64', 

          '111', '60', '64', '109', '60', '108', '59', '60', '109', 

          '64', '66', '61', '111', '109', '65', '61']

ciphertext = ciphertext[::-1]

flag = ''

for i in range(len(ciphertext)):

    i = int(ciphertext[i]) - 10

    flag = flag + chr(i)

print(flag)
#flag{37ce386c21b2c62e65aaaac1ec2eb724}

cat flag

题目是一个png图片。

使用010打开图片发现存在压缩包

foremost分离出一个文件,放在010下发现是MS Office/OLE2的文件头。

修改文件后缀为docx,打开发现有密码,用工具Accent OFFICE Password Recovery暴力破解。

19631

发现文档打不开,于是后缀改为ppt。

PPT隐写,直接左侧查看大纲得到flag

flag{dfe0dbf036a69da486f6a16800b618c4}

离骚

题目

一个加密压缩包和

离骚
【作者】屈原 【朝代】先秦
帝高阳之苗裔兮,朕皇考曰伯庸。

摄提贞于孟陬兮,惟庚寅吾以降。

皇览揆余初度兮,肇锡余以嘉名。

名余曰正则兮,字余曰灵均。

纷吾既有此内美兮,又重之以修能。

扈江离与辟芷兮,纫秋兰以为佩。

汩余若将不及兮,恐年岁之不吾与。

朝搴阰之木兰兮,夕揽洲之宿莽。

日月忽其不淹兮,春与秋其代序。

惟草木之零落兮,恐美人之迟暮。

不抚壮而弃秽兮,何不改乎此度?

乘骐骥以驰骋兮,来吾道夫先路!

昔三后之纯粹兮,固众芳之所在。

杂申椒与菌桂兮,岂惟纫夫蕙茝!

彼尧、舜之耿介兮,既遵道而得路。

何桀纣之昌披兮,夫唯捷径以窘步。

惟夫党人之偷乐兮,路幽昧以险隘。

岂余身之惮殃兮,恐皇舆之败绩。

忽奔走以先后兮,及前王之踵武。

荃不查余之中情兮,反信谗而齌怒。

余固知謇謇之为患兮,忍而不能舍也。

指九天以为正兮,夫唯灵修之故也。

曰黄昏以为期兮,羌中道而改路。

初既与余成言兮,后悔遁而有他。

余既不难夫离别兮,伤灵修之数化。

余既滋兰之九畹兮,又树蕙之百亩。

畦留夷与揭车兮,杂杜衡与芳芷。

冀枝叶之峻茂兮,愿俟时乎吾将刈。

虽萎绝其亦何伤兮,哀众芳之芜秽。

众皆竞进以贪婪兮,凭不厌乎求索。

羌内恕己以量人兮,各兴心而嫉妒。

忽驰骛以追逐兮,非余心之所急。

老冉冉其将至兮,恐修名之不立。

朝饮木兰之坠露兮,夕餐秋菊之落英。

苟余情其信姱以练要兮,长顑颔亦何伤。

掔木根以结茝兮,贯薜荔之落蕊。

矫菌桂以纫蕙兮,索胡绳之纚纚。

謇吾法夫前修兮,非世俗之所服。

虽不周于今之人兮,愿依彭咸之遗则。

长太息以掩涕兮,哀民生之多艰。

余虽好修姱以鞿羁兮,謇朝谇而夕替。

既替余以蕙纕兮,又申之以揽茝。

亦余心之所善兮,虽九死其犹未悔。

怨灵修之浩荡兮,终不察夫民心。

众女嫉余之蛾眉兮,谣诼谓余以善淫。

固时俗之工巧兮,偭规矩而改错。

背绳墨以追曲兮,竞周容以为度。

忳郁邑余侘傺兮,吾独穷困乎此时也。

宁溘死以流亡兮,余不忍为此态也。

鸷鸟之不群兮,自前世而固然。

何方圜之能周兮,夫孰异道而相安?

屈心而抑志兮,忍尤而攘诟。

伏清白以死直兮,固前圣之所厚。

悔相道之不察兮,延伫乎吾将反。

回朕车以复路兮,及行迷之未远。

步余马于兰皋兮,驰椒丘且焉止息。

进不入以离尤兮,退将复修吾初服。

制芰荷以为衣兮,集芙蓉以为裳。

不吾知其亦已兮,苟余情其信芳。

高余冠之岌岌兮,长余佩之陆离。

芳与泽其杂糅兮,唯昭质其犹未亏。

忽反顾以游目兮,将往观乎四荒。

佩缤纷其繁饰兮,芳菲菲其弥章。

民生各有所乐兮,余独好修以为常。

虽体解吾犹未变兮,岂余心之可惩。

女嬃之婵媛兮,申申其詈予。

曰:“鲧婞直以亡身兮,终然夭乎羽之野。

汝何博謇而好修兮,纷独有此姱节。

薋菉葹以盈室兮,判独离而不服。

众不可户说兮,孰云察余之中情。

世并举而好朋兮,夫何茕独而不予听?

依前圣以节中兮,喟凭心而历兹。

济沅、湘以南征兮,就重华而敶词:

启《九辩》与《九歌》兮,夏康娱以自纵。

不顾难以图后兮,五子用失乎家衖。

羿淫游以佚畋兮,又好射夫封狐。

固乱流其鲜终兮,浞又贪夫厥家。

浇身被服强圉兮,纵欲而不忍。

日康娱而自忘兮,厥首用夫颠陨。

夏桀之常违兮,乃遂焉而逢殃。

后辛之菹醢兮,殷宗用而不长。

汤、禹俨而祗敬兮,周论道而莫差。

举贤才而授能兮,循绳墨而不颇。

皇天无私阿兮,览民德焉错辅。

夫维圣哲以茂行兮,苟得用此下土。

瞻前而顾后兮,相观民之计极。

夫孰非义而可用兮?孰非善而可服?

阽余身而危死兮,览余初其犹未悔。

不量凿而正枘兮,固前修以菹醢。

曾歔欷余郁邑兮,哀朕时之不当。

揽茹蕙以掩涕兮,沾余襟之浪浪。

跪敷衽以陈辞兮,耿吾既得此中正。

驷玉虬以桀鹥兮,溘埃风余上征。

朝发轫于苍梧兮,夕余至乎县圃。

欲少留此灵琐兮,日忽忽其将暮。

吾令羲和弭节兮,望崦嵫而勿迫。

路漫漫其修远兮,吾将上下而求索。

饮余马于咸池兮,总余辔乎扶桑。

折若木以拂日兮,聊逍遥以相羊。

前望舒使先驱兮,后飞廉使奔属。

鸾皇为余先戒兮,雷师告余以未具。

吾令凤鸟飞腾兮,继之以日夜。

飘风屯其相离兮,帅云霓而来御。

纷总总其离合兮,斑陆离其上下。

吾令帝阍开关兮,倚阊阖而望予。

时暧暧其将罢兮,结幽兰而延伫。

世溷浊而不分兮,好蔽美而嫉妒。

朝吾将济于白水兮,登阆风而绁马。

忽反顾以流涕兮,哀高丘之无女。

溘吾游此春宫兮,折琼枝以继佩。

及荣华之未落兮,相下女之可诒。

吾令丰隆乘云兮,求宓妃之所在。

解佩纕以结言兮,吾令謇修以为理。

纷总总其离合兮,忽纬繣其难迁。

夕归次于穷石兮,朝濯发乎洧盘。

保厥美以骄傲兮,日康娱以淫游。

虽信美而无礼兮,来违弃而改求。

览相观于四极兮,周流乎天余乃下。

望瑶台之偃蹇兮,见有娀之佚女。

吾令鸩为媒兮,鸩告余以不好。

雄鸠之鸣逝兮,余犹恶其佻巧。

心犹豫而狐疑兮,欲自适而不可。

凤皇既受诒兮,恐高辛之先我。

欲远集而无所止兮,聊浮游以逍遥。

及少康之未家兮,留有虞之二姚。

理弱而媒拙兮,恐导言之不固。

世溷浊而嫉贤兮,好蔽美而称恶。

闺中既以邃远兮,哲王又不寤。

怀朕情而不发兮,余焉能忍而与此终古?

索琼茅以筳篿兮,命灵氛为余占之。

曰:“两美其必合兮,孰信修而慕之?

思九州之博大兮,岂惟是其有女?”

曰:“勉远逝而无狐疑兮,孰求美而释女?

何所独无芳草兮,尔何怀乎故宇?”

世幽昧以昡曜兮,孰云察余之善恶?

民好恶其不同兮,惟此党人其独异!

户服艾以盈要兮,谓幽兰其不可佩。

览察草木其犹未得兮,岂珵美之能当?

苏粪壤以充祎兮,谓申椒其不芳。

欲从灵氛之吉占兮,心犹豫而狐疑。

巫咸将夕降兮,怀椒糈而要之。

百神翳其备降兮,九疑缤其并迎。

皇剡剡其扬灵兮,告余以吉故。

曰:“勉升降以上下兮,求矩矱之所同。

汤、禹俨而求合兮,挚、咎繇而能调。

苟中情其好修兮,又何必用夫行媒?

说操筑于傅岩兮,武丁用而不疑。

吕望之鼓刀兮,遭周文而得举。

宁戚之讴歌兮,齐桓闻以该辅。

及年岁之未晏兮,时亦犹其未央。

恐鹈鴃之先鸣兮,使夫百草为之不芳。”

何琼佩之偃蹇兮,众薆然而蔽之。

惟此党人之不谅兮,恐嫉妒而折之。

时缤纷其变易兮,又何可以淹留?

兰芷变而不芳兮,荃蕙化而为茅。

何昔日之芳草兮,今直为此萧艾也?

岂其有他故兮,莫好修之害也!

余以兰为可恃兮,羌无实而容长。

委厥美以从俗兮,苟得列乎众芳。

椒专佞以慢慆兮,樧又欲充夫佩帏。

既干进而务入兮,又何芳之能祗?

固时俗之流从兮,又孰能无变化?

览椒兰其若兹兮,又况揭车与江离?

惟兹佩之可贵兮,委厥美而历兹。

芳菲菲而难亏兮,芬至今犹未沬。

和调度以自娱兮,聊浮游而求女。

及余饰之方壮兮,周流观乎上下。

灵氛既告余以吉占兮,历吉日乎吾将行。

折琼枝以为羞兮,精琼爢以为粻。

为余驾飞龙兮,杂瑶象以为车。

何离心之可同兮?吾将远逝以自疏。

邅吾道夫昆仑兮,路修远以周流。

扬云霓之晻蔼兮,鸣玉鸾之啾啾。

朝发轫于天津兮,夕余至乎西极。

凤皇翼其承旗兮,高翱翔之翼翼。

忽吾行此流沙兮,遵赤水而容与。

麾蛟龙使梁津兮,诏西皇使涉予。

路修远以多艰兮,腾众车使径待。

路不周以左转兮,指西海以为期。

屯余车其千乘兮,齐玉轪而并驰。

驾八龙之婉婉兮,载云旗之委蛇。

抑志而弭节兮,神高驰之邈邈。

奏《九歌》而舞《韶》兮,聊假日以偷乐。

陟升皇之赫戏兮,忽临睨夫旧乡。

仆夫悲余马怀兮,蜷局顾而不行。

乱曰:已矣哉!

国无人莫我知兮,又何怀乎故都!

既莫足与为美政兮,吾将从彭咸之所居!

我的解答

拿到文件是一个文本和一个含有flag的压缩包。观察发现里面有一个跟给的文本是一样的文本。

怀疑这是明文爆破,将外边的文本压缩为zip文件。选择明文爆破,然后把两个压缩包放到对应的位置。

得到密码 Jljcxy,解压拿到flag

flag{5bfd375b4a4d29bc667e8bd5c8ceb0fc}

deep

题目

/*
    g_szBuffer数组中存储原本flag,不小心被删除了!
    运行后得到的数据存储在hint文件中,恢复flag嘛,看你的了^_^
    得到数据后,注意格式:flag{g_szBuffer中的数据}
*/

#include <iostream>

char g_szBuffer[] = ""; 

int main(int argc, char *argv[])
{
    unsigned int uNum = 0;
    for (int i = 0; i < sizeof(g_szbuffer) / 4; i++)
    {
        unum = *(unsigned int*)(&g_szbuffer[i * 4]);
        printf("%d\r\n", unum);
    }
    
    system("pause");
    
    return 0;
}
859254885
1714499893
875837240
825505075
962737761
1647404083
842360118
811938613

我的解答

查看题目我们得知线索在hint中。题目hint文件中,提供了八行数据。

通过观察:每个数据不超过一个整型数据的最大值。每一行数据对应了cpp文件中的for循环语句,循环一次所生成的结果。

我们可以将每行生成的结果逐个进行反向强制转换类型,具体为:

将无符号整型的内存地址强制转换为字符型指针类型。

然后逐项输出,即得到正确答案。

// 需要包含的头文件

#include <stdio.h>

#include <stdlib.h>

// 主函数部分

int main()

{

    // 用于存储八组数据,数组元素个数一定填个大于8的数,方便输出

    int naNum[9] = {

        859254885, 1714499893,

        875837240, 825505075,

        962737761, 1647404083,

        842360118, 811938613

    };

    // 理论上遍历数据中8个数据,逐项进行强制类型转换并输出就可以得到flag。

    // 偷懒如下:

    // 由于数组中的数据存储为连续,所以找到了数组的首地址,一次性就可以全部输出。

    printf("%s", (char *)naNum) ;

    // 暂停一下看看结果

    system("pause");

    // 程序返回

    return 0;

}


flag{e073511f87443541a6b93d1b6e5253e0}

找一找

题目给了docx文件,flag就在里面,找找就行了

第三部分修改文件后缀为zip,打开找到docProps文件夹里的core.xml里面就有第三部分

flag{ff539ed2b017e74d3bc1eb8e9e9ebc6c}

找到我我就让你嘿嘿嘿

李华网恋追求男神爱而不得,在男神朋友圈发现男神出差去了南方,李华想和男神线下面基,但惨遭男神拒绝,请你帮帮李华,根据男神拍摄的照片找到男神所在位置,帮助李华追爱成功

flag为拍摄者所在小区的首字母MD5三十二位加密后套上flag{}
例:保利·春天里,则加密blctl,flag为:flag{2df9b1305ede35a218b0a639dc529ff0}

找到比较明显的,清晰的建筑(康明眼科)。

在百度地图上搜索康明眼科找到符合位置标准的

然后查看街景与图片是否相符

OK!就它了。确认对面小区为家和.水岸沁园,加密jhsaqy得到flag

flag{f5ff1ad1f80adcd878049171120ce063}

学安全很轻松的

题目

zaqdx?????

和一个加密压缩包

我的解答

掩码爆破

zaqdx24680

解压得到半段flag和一个图片

c43228862b7ff301}

图片一眼丁真,宽高修改

flag{3adc8d1f53121b87c43228862b7ff301}

无字天书

文件打开错误不是压缩包,放到010分析一下

压缩包头有问题。修改一下保存。

然后打开发现密码提示

压缩包密码:
ABBBB BABA AB BAA A BABA AAAAB AABA BBBBA BBBAA AABA BBBAA A BAAAA AABA AAAAB

培根?还是摩斯?都试试

莫斯解码A换成.  B换成-

得到密码小写 1cadec4f98f8e6f4

解压得到空白docx文件,判断为零宽隐写 https://330k.github.io/misc_tools/unicode_steganography.html

flag{fab32bfd4253fcbdb652dd4bbcdb782d}

无限解Base64

exp:

import base64

with open("flag_new.txt", "r") as file:
    data = file.read()

for _ in range(50):
    data = base64.b64decode(data)

print(data)
#flag{f31ff0b8e83b6fdf70f5d3ba365e62e7}

我的❤是冰冰的

拿到附件是一个音频,但是细心观察会发现,音频上有一个图片,所以这里就是猜测图片里可能会有东西。

使用PotPlayer播放器按ctrl+f1然后提取出图片。

工具官网:http://potplayer.tv/

在图片属性里发现密码bingbing

outguess解密。

outguess -k "bingbing" -r 1.jpg hidden.txt
flag{3bc9ef04135f11e1b80f6ec8efc57dcb}

送分

给了一个wav文件,频谱图

flag{Mu313}

刷新试一下

题目

我的解答

题目说刷新试一下?

刷新想到F5隐写?试一试。但需要密码,密码在哪?在图片属性里504

java Extract 1111.jpg -p 504
flag{0ae0bebf93cb690235f9d1999cc68ea8}

属性?真加密?

题目

图片属性发现

we_are_young}

将压缩包用Winrar打开,查看注释,得到一串数字。

102,108,97,103,123,105,116,95,105,115,95,115,105,109,112,108,101,95

这应该就是前半部分啦!!!

转化为ASCII得到

flag{it_is_simple_
flag{it_is_simple_we_are_young}

Mimikatz

描述:峰哥某一天通过3389端口的CVE-2019-0708漏洞拿到了一台目标机器,并新建了一个管理员用户,远程登陆了目标主机,他知道内网中很多机器的密码会因为人为设置会出现相同的情况,所以它为了继续横向渗透,利用procdump工具提取了用户登录凭据,你能帮他继续破解出登录密码么?flag格式:flag{md5(登录密码)}

题目

出题人利用了procdump工具将用户登录凭据信息,导出为lsass.dmp文件。而lsass.exe进程就是用于本地安全和登陆策略的。我们需通过Mimikatz破解出lsass.dmp文件中保存的登录密码。Mimikatzprodump工具下载链接如下:

链接:百度网盘 请输入提取码 密码:fc38

首先,导出lsass.exe

管理员运行:

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

然后,Mimikatz破解

管理员运行:

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

注意:运行时关掉一切杀软,因为默认的mimikatz已经被杀毒软件标记查杀了。

最后,可以看到明文密码被破解出为toor,Md5加密即为flag。

flag{7b24afc8bc80e548d66c4e7ff72171c5}

vc

题目

666啊666666啊666啊666啊666啊666啊666啊666

和一个vc文件

我的解答

根据题目为"vc",且文件名也为"vc",猜测是vc加密容器进行的加密。

解压之后,用veracrypt软件打开,导入相关文件,如下:

然后打开所在盘文件得到flag.txt

flag{letususeveracrypt}

Xshell密码破解

题目

这是一道贴合实际攻击场景的一道题,在一次溯源反制的过程中,purplet被蓝队大佬反制,自己的电脑竟被控制住了,蓝队大佬在从purplet的目标机中查到一段令人不解的数字:S-1-5-21-323397330-1794634962-2946154912-1001,同时还得到了一个Xshell的配置文件,他们想知道purplet这个人的Xshell连接过的服务器密码是多少,你能帮助他们破解开么?
flag{MD5(密码)}

我的解答:

根据题目表述:SID给了,Xshell保存密码的配置文件给了,当用户使用Xshell登录服务器时使用了保存密码的功能,Xshell就会在其Session文件夹中保存有当前的密码加密哈希,此时再需要知道目标用户的机器名和SID值就可以破解该密码。

正常当拿到Shell后输入whoami /user即可看到SID值,这里题目已经把xsh文件和用户的SID值给出了。

利用自动化解密工具即可,github链接:https://github.com/dzxs/Xdecrypt

将脚本工具下载到本地,安装好所需要的模块,输入命令直接破解即可。

python Xdecrypt.py -s purpletS-1-5-21-323397330-1794634962-2946154912-1001 -p vYZ6tni/wCY0aWv83Tu+0UvW5hCYP1gMOl8o/zF5LIJkmHsIpz1l1Avnog==

得到

nicaicai!23
flag{6a7f279694ae1c27c6543edc93e28de2}

爱你

题目

我的解答:

查看红绿蓝0位通道可看到压缩文件格式开头的十六进制文本:

提取该段文字放入010editor中,保存为zip格式,得到压缩文件。在注释部分有提示:

504B0304140009000800CA46D6549CBB039F340000002600000008000000666C61672E747874EBB157EB42C28586BB834F1B3E0EC1B8BEA2E4889CB07FBCB17967F43C64CACD5F416C07DD1C896C5E97ED662E06ECFF926E4F36504B07089CBB039F3400000026000000504B01021F00140009000800CA46D6549CBB039F3400000026000000080024000000000000002000000000000000666C61672E7478740A00200000000000010018009FC6029CD285D8019FC6029CD285D80102CABC84D285D801504B050600000000010001005A0000006A0000002002796F20796F20796F20796F2043796E64692C20776861747768617427732077726F6E672077697468206D653F2028B0AEC4E3290D0A796F20796F2043796E646920626162792C207768617427732077726F6E672077697468206D653F0D0A43796E64692C2067697665206D6520796F757220666C61672C20796F75206D616B65206D6520736E65657A6520616C6C207468652074696D650D0A0D0A0D0A536F62616279A1A168696E74B6E0CBB5D2BBB5E3A1A1CFEBCED2BECDB6E0BFB4D2BBD1DB0D0ACCE1CABEB6E0D2BBB5E3B5E3A1A1C8C3CED2C4DCA1A1D5E6B5C4BFB4BCFB0D0A476F64627965A1A1CCD7CDDEC9D9B3F6D2BBB5E3A1A1BAA6C5C2B2BBD6BBD2BBCCEC0D0AB6E0D2BBB5E3A1A1C8C3CED2A1A1D0C4B8CAC7E9D4B820B0AEC4E30D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A68696E74A3BA726663343034320D0A707764203D2062222C5C7839625C7863655C78613673295C7864305C786432745C7831305C7839635C78306327335C7839395C7864636072325C7830385C7227315C783031305C78646576325C7839305C786366265C786533205C78633422•?

hint:rfc4042

pwd = b",\x9b\xce\xa6s)\xd0\xd2t\x10\x9c\x0c'3\x99\xdc`r2\x08\r'1\x010\xdev2\x90\xcf&\xe3 \xc4"

百度可知,在愚人节这天IEEE发表的rfc4042文件规定了utf9utf18这2个所谓的Unicode的高效转换格式。

下载安装python3的utf9库:GitHub - FantasqueX/utf9: Encode and decode text using UTF-9.

进行解码即可得到解压密码:

import utf9

pwd = b",\x9b\xce\xa6s)\xd0\xd2t\x10\x9c\x0c'3\x99\xdc`r2\x08\r'1\x010\xdev2\x90\xcf&\xe3 \xc4"

utf9.utf9decode(pwd)

LoveCynd1

然后解压压缩包即可

flag{01e979f6dd21cd325e05fc1405e76bfd}

菜狗

压缩包里面存在加密的png图片。

尝试爆破,得到密码

zaqqaz

解压

得到一张图片,是cloacked-pixel隐写,秘钥为压缩包解压密码。B神工具一把梭。

得到

flag{ae7e960d8e7ce40e2157285680e2a5e4}

稻香

稻香.wav文件放入010中发现:

解码得到密码:

p@2sw0rd!
  • 放入DeepSound中查看隐藏文件,发现存在密码。密码已解出

然后提取文件

图片属性存在提示F5-steganography,F5隐写

java Extract fl@g.jpg -p p@2sw0rd!
flag{7cde2145bef063b156ed13fd6dae8ffc}

东北话是最好的语言

题目txt文件中有一大段字符串,经过简单观察后发现是图片转base64的倒序,标志就是data:image/png;base64

使用Cyber的逆序方法把文件信息逆过来

在线网址还原图片 https://tool.chinaz.com/tools/imgtobase

010打开图片,结尾发现base64

解码得到东北话

#结果转为纯字母,再md5,flag{md5()}
弗赖哥是活雷锋。
鹅城都是活雷锋。
弗赖哥装二。
弗赖哥稍稍。
唠唠:弗赖哥。
弗赖哥稍稍。
唠唠:弗赖哥。
弗赖哥装二。
唠唠:弗赖哥。
弗赖哥装一。
唠唠:弗赖哥。
弗赖哥稍稍。
唠唠:弗赖哥。
弗赖哥装13加112。
唠唠:弗赖哥刨掉一堆堆九。
鹅城来了个“a”。
鹅城来了个“b”。
鹅城来了个“c”。
鹅城来了个“d”。
鹅城来了个“e”。
鹅城来了个“f”。
鹅城来了个“g”。
鹅城来了个“h”。
鹅城来了个“i”。
鹅城来了个“j”。
鹅城来了个“k”。
鹅城来了个“l”。
鹅城来了个“m”。
鹅城来了个“n”。
鹅城来了个“o”。
鹅城来了个“p”。
鹅城来了个“q”。
鹅城来了个“r”。
鹅城来了个“s”。
鹅城来了个“t”。
鹅城来了个“u”。
鹅城来了个“v”。
鹅城来了个“w”。
鹅城来了个“x”。
鹅城来了个“y”。
鹅城来了个“z”。
唠唠:鹅城的老大。
唠唠:鹅城的老七。
唠唠:鹅城的老九。
唠唠:鹅城的老幺。
唠唠:“01101000”。
唠唠:鹅城的老(二加三)。
唠唠:“0x72”。
唠唠:“101”。

根据题目提示和内容综合分析,得知这是东北话语言基于python改的一种编程语言,逻辑与python3一致,具体安装和语法参考github上的文件: GitHub - zhanyong-wan/dongbei: 东北方言编程语言

安装好环境后,把文件改后缀为dongbei,在根目录下打开终端,输入命令后得到运行结果。

dongbei 1.dongbei

根据注释,结果为纯字母,观察得知,102,108很容易想到是ascii的f和l,而01101000是二进制,转为ascii码为h,0x72是十六进制,转为ascii码为r,101十进制转为ascii码为e,连起来就是flagizhere,然后MD5。

flag{4d5193eaeb2b18aa7e4357078b7550f3}

两段密码

两段密码都在exe文件里

010发现存在压缩包,kali使用binwalk分离出来

解压得到提示密码一部分

passwordPART1:55c46nD0

题目说两段密码都在exe里,那继续找。

在使用foremost得到另一个exe,010打开文件尾有第二部分密码

合并为

55c46nD0LX8I3F9E

解压得到

看内容形式,我们尝试修改下压缩包文件后缀为docx,打开发现有东西,看来思路没错。

接下来就是文档隐写了。删除图片把文字改为红色即可看到flag。

flag{LCD2ehOtE8CrdBvU}

流量分析

追踪tcp流2可发现flag。

流量

目前复现本题不知道为啥提取不出来数据。。。之前应该可以提取出来。按官方WP把解题思路说下,如下:

给了个usb流量包,可知考察usb数据提取。

可参考 https://blog.csdn.net/m0_64702918/article/details/131759542

USB协议的数据部分在Leftover Capture Data域之中,在Mac和Linux下可以用tshark命令可以将 leftover capture data单独提取出来。

tshark -r usb1.pcapng -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

提取出结果之后,对提取出的数据中添加冒号,运行后生成out.txt文件。

f=open('usbdata.txt','r')
fi=open('out.txt','w')
while 1:
    a=f.readline().strip()
    if a:
        if len(a)==16:
            out=''
            for i in range(0,len(a),2):
                if i+2 != len(a):
                    out+=a[i]+a[i+1]+":"
                else:
                    out+=a[i]+a[i+1]
            fi.write(out)
            fi.write('\n')
    else:
        break
fi.close()

最后解密脚本:

normalKeys = {

    "04":"a", "05":"b", "06":"c", "07":"d", "08":"e",

    "09":"f", "0a":"g", "0b":"h", "0c":"i", "0d":"j",

     "0e":"k", "0f":"l", "10":"m", "11":"n", "12":"o",

      "13":"p", "14":"q", "15":"r", "16":"s", "17":"t",

       "18":"u", "19":"v", "1a":"w", "1b":"x", "1c":"y",

        "1d":"z","1e":"1", "1f":"2", "20":"3", "21":"4",

         "22":"5", "23":"6","24":"7","25":"8","26":"9",

         "27":"0","28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t",

         "2c":"<SPACE>","2d":"-","2e":"=","2f":"[","30":"]","31":"\\",

         "32":"<NON>","33":";","34":"'","35":"<GA>","36":",","37":".",

         "38":"/","39":"<CAP>","3a":"<F1>","3b":"<F2>", "3c":"<F3>","3d":"<F4>",

         "3e":"<F5>","3f":"<F6>","40":"<F7>","41":"<F8>","42":"<F9>","43":"<F10>",

         "44":"<F11>","45":"<F12>"}

shiftKeys = {

    "04":"A", "05":"B", "06":"C", "07":"D", "08":"E",

     "09":"F", "0a":"G", "0b":"H", "0c":"I", "0d":"J",

      "0e":"K", "0f":"L", "10":"M", "11":"N", "12":"O",

       "13":"P", "14":"Q", "15":"R", "16":"S", "17":"T",

        "18":"U", "19":"V", "1a":"W", "1b":"X", "1c":"Y",

         "1d":"Z","1e":"!", "1f":"@", "20":"#", "21":"$",

          "22":"%", "23":"^","24":"&","25":"*","26":"(","27":")",

          "28":"<RET>","29":"<ESC>","2a":"<DEL>", "2b":"\t","2c":"<SPACE>",

          "2d":"_","2e":"+","2f":"{","30":"}","31":"|","32":"<NON>","33":"\"",

          "34":":","35":"<GA>","36":"<","37":">","38":"?","39":"<CAP>","3a":"<F1>",

          "3b":"<F2>", "3c":"<F3>","3d":"<F4>","3e":"<F5>","3f":"<F6>","40":"<F7>",

          "41":"<F8>","42":"<F9>","43":"<F10>","44":"<F11>","45":"<F12>"}

output = []
keys = open('out.txt')
for line in keys:
    try:
        if line[0]!='0' or (line[1]!='0' and line[1]!='2') or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0' or line[6:8]=="00":
             continue
        if line[6:8] in normalKeys.keys():
            output += [[normalKeys[line[6:8]]],[shiftKeys[line[6:8]]]][line[1]=='2']
        else:
            output += ['[unknown]']
    except:
        pass
keys.close()
flag=0
print("".join(output))
for i in range(len(output)):
    try:
        a=output.index('<DEL>')
        del output[a]
        del output[a-1]
    except:
        pass

for i in range(len(output)):
    try:
        if output[i]=="<CAP>":
            flag+=1
            output.pop(i)
            if flag==2:
                flag=0
        if flag!=0:
            output[i]=output[i].upper()
    except:
        pass
print ('output :' + "".join(output))

让op跑起来

下载题目中的附件,解压,得到一个vmdk文件。此题考察的是自行搭建商用软路由环境,登录后台管理界面。

首先创建虚拟机。教程网上有

然后修改软路由ip地址,控制面板中修改vmnet1,自定义ip地址,这里的ip地址和openwrt虚拟机的不能重复!同时也不能和家里局域网的网段重复!

启动虚拟机,看到内核输出信息,刷屏过后等待其静止不动,按一下回车,进入终端。输入vi /etc/config/network,按i编辑,修改ip地址为192.168.2.50(和上面设置虚拟网卡的ip地址在同一个网段,但不要重复),编辑完成后按ESC,输入:wq,保存配置文件。

vi /etc/config/network

虚拟机内输入reboot,重启openwrt虚拟机,主机电脑访问192.168.2.50,输入账号密码root/password(hint已给出)。登陆到后台界面,即可发现flag。

生产环境下的lvm

hint:还原lvm的快照,即可找到正确的备份sql

  • LVM就是通过将底层的物理硬盘封装,然后以逻辑卷的方式呈现给上层应用。当我们对底层的物理硬盘进行操作时,不再是针对分区进行操作,而是通过逻辑卷对底层硬盘进行管理操作。
  • LVM(Logical Volume Manager)逻辑卷管理,是在硬盘分区和文件系统之间添加的一个逻辑层,为文件系统屏蔽下层硬盘分区布局,并提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在硬盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越物理硬盘。当服务器添加了新的硬盘后,管理员不必将原有的文件移动到新的硬盘上,而是通过LVM直接扩展文件系统来跨越物理硬盘。

1. 添加虚拟机

下载题目中所给的vmdk文件,虚拟机添加磁盘,启动虚拟机。

注意:如果此时导入的磁盘启动顺序在前,虚拟机会卡死不启动。此时需要在启动虚拟机时按f2,进入bios,调整启动顺序。

2. 查看信息

  • 进入虚拟机启动,输入命令:fdisk -l,可以看到这是个lvm卷。

  • 输入查看lvm卷信息的命令:lvdisplay,可以看到有个500mb的LVM分区。

3. 挂载

$mount /dev/disk_lvm/disklvm /mnt   //挂载分区

ls

列出目录下文件,发现是个网站,又同时发现存在backup.sql敏感文件。

4. 查看文件

cat backup.sql      //查看文件

发现文件被破坏了,英文提示“这里是空的,需要恢复快照”。

5. 查看快照

$lvs      //列出所有的lvm逻辑卷

看到一个lvm的快照,并且指向的就是disklvm

6. 卸载分区并恢复快照

$ umount /mnt       //卸载掉挂载的分区

$ lvconvert --merge /dev/disk_lvm/kuaizhao       //恢复快照

7. 挂载分区查看flag

$ mount /dev/disk_lvm/disklvm /mnt  //再次挂载

cat backup.sql      //查看内容

 

flag{lvmisveryimportant}

路由自启动

题目给出一个bin文件

1、题目分析:

linux系统自启动脚本存放位置 。

全世界流行的开源嵌入式系统openwrt所用squashfs文件系统的解包。

2、解题

先下载题目附件,附件名字其实已经包含了重要信息:openwrtsquashfs

binwalk -e openwrt-ipq807x-generic-xiaomi_ax3600-squashfs-nand-sysupgrade.bin

分离文件。

文件名告诉你了,squashfs文件系统,这里使用unsquash解开该文件系统。进入分离出的文件夹,该镜像分为kernel(内核)和rootfs(主文件系统)两部分。这里需要linux知识,自启动配置脚本在rootfs/etc/rc.local下,所以使用unsquashfs命令,解开rootfs

打开/etc/rc.local,得到flag。

flag{playwithopenwrt}

雪姐

题目

两个加密压缩包,经判断不是伪加密。但发现key.zip的内容非常少,这里就可以通过crc32爆破

会发现爆破出的内容有一个有价值的字符串,1sHere

然后用密码解flag.zip压缩包,解压出一个文本,发现是一大堆关于雪的成语,同时也有一些空白字符,结合题目名字可以想到是snow隐写(不需要密码)

snow.exe -C flag.txt
flag{I`am_very_T1red}

愿者上钩

百度网盘下载,得到流量包,根据提示,是要在流量包中找到邮件,再在邮件内容中找到钓鱼网站,进行进一步分析。

使用工具wireshark打开流量包。

众所周知,常用的邮件传输协议有smtppop3map,过滤smtp流,发现邮件传输记录。

smtp也是tcp的一种,所以追踪tcp流,发现一段编码后的内容,其中告诉了是base64编码,字符集是gb2312。

使用在线网站解码http://web.chacuo.net/charsetbase64

118.194.196.232:8084进行md5编码得到flag。

flag{eb0531c228897e64b5bd61a6923f1dec}

Mozilla

将密码的明文进行md5加密即可得到flag。

题目

火狐浏览器(Firefox)是非营利组织Mozilla开发的一款浏览器。32.0 版本及以上的火狐浏览器加密保存的密码在logins.json中。

我的解答:

使用firepwd.py工具可解密该题的密码。

1)下载工具:git clone GitHub - lclevy/firepwd: firepwd.py, an open source tool to decrypt Mozilla protected passwords

2)切换到该工具的目录:cd firepwd

3)安装依赖库:pip3 install -r requirements.txt

4)将key3.db和logins.json以及整个文件夹5vz0vl9j.default放到firepwd的文件夹中后执行工具,得到密码:(琢磨好久才把指令弄出来,哎!)

python firepwd.py -d 5vz0vl9j.default/

flag{81c93a6d22daaa5fdb4dbd4267e5e06e}

### PolarCTF Uploader Documentation and Resources In the context of CTF (Capture The Flag) competitions, challenges like "ezupload" from PolarCTF provide a platform to test skills in web security, particularly focusing on file upload vulnerabilities. Modifying `Content-Disposition: form-data; name="userfile"; filename="1.gif"` to use `filename="1.php"` suggests an attempt to exploit server-side processing flaws where PHP files might be executed instead of treated as regular uploads[^1]. For detailed documentation or resources specifically about **PolarCTF uploader**, one should look into several areas: #### Understanding File Upload Vulnerabilities File upload mechanisms can introduce significant risks if not properly secured. Security researchers often document common pitfalls including improper validation checks that allow attackers to bypass restrictions intended to prevent malicious content such as executable scripts being uploaded under guise of benign formats like images. #### Learning From Past Challenges Communities surrounding platforms hosting similar events frequently share write-ups post-event which detail solutions found during competition timeframes. These serve both educational purposes for newcomers learning cybersecurity principles while also offering insights into how experienced players approached problems presented within specific games like PolarCTF. #### Exploring Official Event Pages & Forums Organizers typically maintain websites dedicated to their respective contests wherein participants may find official rulesets alongside any supplementary materials provided by challenge creators themselves. Additionally, forums associated with these sites offer spaces for discussion among peers regarding strategies employed throughout various rounds. ```python import requests url = 'http://example.com/upload' files = {'userfile': ('1.php', open('payload.php', 'rb'))} response = requests.post(url, files=files) print(response.text) ``` This code snippet demonstrates sending a POST request with altered headers mimicking what was described earlier but using Python's `requests` library rather than manually crafting HTTP packets. Note this is purely illustrative; actual exploitation would violate terms-of-service agreements set forth by most online services unless explicit permission has been granted through sanctioned testing environments designed explicitly for training exercises. --related questions-- 1. What are key considerations when designing secure file upload functionality? 2. How do modern frameworks mitigate against typical attack vectors seen in file handling routines? 3. Can you recommend reputable sources for studying past CTF challenges related to web application security? 4. In what ways does altering MIME types impact server behavior concerning uploaded files?
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值