XCTF-Misc新手区

1、this_is_flag


2、pdf

下载附件,打开后是一个pdf,采用编辑,将图片移动一下位置,flag就出来了

3、如来十三掌

打开附件

在“与佛论禅”解密,得到一段疑似base64的编码,如来十三掌,rot13一下,再base64解密即可得到flag.

4、give_you_flag

一个.gif图片,用stegsolve的查看帧的功能模块查看,发现一个缺少三个定位部分的二维码,将其补全,扫一扫即可。

flag{e7d478cf6b915f50ab1277f78502a2c5}
https://cli.im/news/help/10601 二维码解说

5. 坚持60s

下载发现是一个.jar的游戏,使用java反编译工具,查看源码,得到flag.也可以玩游戏哦,游戏有bug。

得到flag,结果需要base64解密

flag{DajiDali_JinwanChiji}

6.gif

打开压缩包发现许多张黑白颜色的图片,将黑白图片分别记为1,0,得到01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101,转化为字符串形式即可。

# gif 二进制转字符串
import re
a = '01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101'
b = re.findall(r'.{8}',a)
flag = ''
for i in b:
    flag += chr(int(i,2))
print(flag)
flag{FuN_giF}

7.掀桌子

通过观察,试着将16进制字符转为字符串,发现不能直接转化,试着将ascii码值减去128再转化,得到flag.

# 掀桌子脚本,十六进制转字符串
import re
a = 'c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
b = re.findall(r'.{2}',a)
flag = ''
for i in b:
    flag += chr(int(int(i,16)-128))
print(flag)
flag{hjzcydjzbjdcjkzkcugisdchjyjsbdfr}

8.SimpleRAR

解压附件,发现有两个文件,解压只得到flag.txt

用winHex打开压缩包,把png部分块的7A改为74

解压得到secret.png和flag.txt,再用winHex打开secret.png,发现文件头为47494638(gif)

修改后缀名为.gif,用stegsolve打开只能看到半张二维码

由题可知为双层图,用ps打开分离图层后保存–具体步骤:点击图层 – 复制图层 – 确定,再点击文件 – 储存 – 保存

再用stegsolve分别打开两个gif,得到两张不全的二维码,p全二维码,扫描得到flag

flag{yanji4n_bu_we1shi}

9.base64stego

无法直接解压压缩包,将其放在winhex下,查找rar标志位,发现是一个RAR伪加密,将第二个504B后的0900改为0000,解压得到一个内容全是base64编码的文件,发现是base64文件隐写,python环境下直接利用脚本即可解出flag.

#解密脚本1
import base64
 
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('stego.txt', 'rb') as f:
    flag = ''
    bin_str = ''
    for line in f.readlines():
        stegb64 = str(line, "utf-8").strip("\n")
        rowb64 =  str(base64.b64encode(base64.b64decode(stegb64)), "utf-8").strip("\n")
        offset = abs(b64chars.index(stegb64.replace('=','')[-1]) - b64chars.index(rowb64.replace('=','')[-1]))
        equalnum = stegb64.count('=') #no equalnum no offset
        if equalnum:
            bin_str += bin(offset)[2:].zfill(equalnum * 2)
            #flag += chr(int(bin(offset)[2:].zfill(equalnum * 2), 2))
            #print(flag) 这样写得不出正确结果
        print([chr(int(bin_str[i:i + 8], 2)) for i in range(0, len(bin_str), 8)])
# base64文件隐写脚本
#!/user/bin/env python
# -*-coding:utf-8 -*-
def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in xrange(len(s1)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res

def solve_stego():

    with open('E://stego.txt', 'rb') as f:
        file_lines = f.readlines()

    bin_str = ''
    for line in file_lines:
        steg_line = line.replace('\n', '')
        norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
        diff = get_base64_diff_value(steg_line, norm_line)
        pads_num = steg_line.count('=')
        if diff:
            bin_str += bin(diff)[2:].zfill(pads_num * 2)
        else:
            bin_str += '0' * pads_num * 2

    res_str = ''

    for i in xrange(0, len(bin_str), 8):

        res_str += chr(int(bin_str[i:i+8], 2))
    print res_str

solve_stego()
#加密脚本
import base64
flag = 'Tr0y{Base64isF4n}' #flag
bin_str = ''.join([bin(ord(c)).replace('0b', '').zfill(8) for c in flag])
base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('0.txt', 'rb') as f0, open('1.txt', 'wb') as f1: #'0.txt'是明文, '1.txt'用于存放隐写后的 base64
    for line in f0.readlines():
        rowstr = base64.b64encode(line.replace('\n', ''))
        equalnum = rowstr.count('=')
        if equalnum and len(bin_str):
            offset = int('0b'+bin_str[:equalnum * 2], 2)
            char = rowstr[len(rowstr) - equalnum - 1]
            rowstr = rowstr.replace(char, base64chars[base64chars.index(char) + offset])
            bin_str = bin_str[equalnum*2:]
        f1.write(rowstr + '\n')
flag{Base_sixty_four_point_five}

10.功夫再高也怕菜刀

foremost分离文件,得到一个加密的压缩包,点进去查看发现一个flag.txt文件,wireshark下查找flag.txt字符串,追踪TCP流,最终在第1150个包发现一段图片的16进制编码,将其用winhex另存为一个图片,得到压缩包的密码,解压得到flag.

ctrl+F查找
追踪几个tcp数据流后发现存在FFD8/FFD9,这是png图片文件的开头和结尾,复制导出来,是一张图片
输入压缩包密码得到flag
flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}

11.ext3

a.把文件放进虚拟机,使用命令

strings linux | grep flag

发现存在flag.txt文件,ext3文件是一种Linux日志文件,所以把它挂载到linux系统上
把这个文件挂载到mnt目录,然后进入此目录,使用ls列出所有文件,查看flag

mount linux /mnt
cd /mnt
ls
cd 07avZhikgbf/
cat flag.txt

base64解密得flag

flag{sajbcibzskjjcnbhsbvcjbjszcszbkzj}

12.stegano

在google上安装插件PDF Viewer,控制台输入document.documentElement.textContent,得到一串AB编码而成的字符串,将A变为 . ,B变为 – 

-.-. — -. –. .-. .- – ..- .-.. .- – .. — -. … –..– ..-. .-.. .- –. —… .—- -. …- .—- ….. .—- -… .-.. …– — …– ….. ….. ….- –. …–

摩斯解密为CONGRATULATIONSnullFLAGnull1NV151BL3M3554G3,即flag为1NV151BL3M3554G3

flag{1nv151bl3m3554g3}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇