前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >攻防世界-杂项writeup

攻防世界-杂项writeup

作者头像
yichen
修改2020-01-03 14:31:46
2.1K2
修改2020-01-03 14:31:46
举报

长期更新一波 攻防世界 的杂项题解

这东西主要靠积累吧

攻防世界:https://adworld.xctf.org.cn

新手练习区

1、this_is_flag

题目直接给出了 flag

2、ext3

主要考察 linux 下光盘的挂载

strings 文件名 | grep flag

搜索文件中的可打印字符 grep:全面搜索正则表达式并把行打印出来

使用命令:mount linux ./linux_cd

将 linux(文件名) 挂载到 linux_cd 目录下,正常访问 O7avZhikgKgbF 文件夹即可看到 flag 文件,再经过 base64 解码得到最终 flag

3、give_you_flag

动态图,一帧一帧看(我用的是爱奇艺万能播放器),在第50帧有个二维码,但是少了三个定位图案,用 PS 补上,扫码得到 flag

4、pdf

下载下来直接把编辑 PDF,把图片拿开就可以看到 flag

5、坚持60s

一个 java 小游戏,用 jd-gui 打开,直接搜索:flag,得到,结果需要 base64 解码

6、如来十三掌

打开 doc,与佛论禅编码:http://www.keyfc.net/bbs/tools/tudoucode.aspx

解出来先 rot-13,然后 base64

7、gif

白为0,黑为1

01100110011011000110000101100111011110110100011001110101010011100101111101100111011010010100011001111101

二进制转字符串得到 flag

8、SimpleRAR

打开只有一个 flag.txt,但是用 winhex 打开发现应该还有一个 png 文件,

将这里改成74

再打开就看到了 png 文件,winhex 发现其实是个 gif 将后缀改成 gif

分离出来(我用的是 PS),然后用 Stegsolve 查看

把这个二维码拼起来,再把定位标志补上扫码得到 flag

9、掀桌子

网上师傅们给出的解密代码

代码语言:javascript
复制
string = "c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2"
flag = ''
for i in range(0,len(string), 2):
    s = "0x" + string[i] + string[i+1]
    flag += chr(int(s, 16) - 128)
print(flag)

每两个一组,将16进制转换为10进制,减去128以后输出 ascii

10、功夫再高也怕菜刀

下载到一个流量包,有 foremost 分离一下

得到一个压缩包,里面有 flag 文件,爆破就别想了(太复杂),

分析流量包!!

ctrl+F 搜索字符

选择第1150个,右键,追踪流 -> TCP 流

把这些保存下来

从 FFD8FF 开始到 FFD9 复制出来

打开 winhex 新建一个文件,把上面的粘贴进去,注意,选择 hex

可以看出是个 jpg 了

保存后打开图片:

用这个密码打开压缩包里的 flag.txt

11、stegano

下载 PDF 在火狐浏览器打开,控制台输入:

代码语言:javascript
复制
document.documentElement.textContent

看一下内容,会有一串

代码语言:javascript
复制
BABA BBB BA BBA ABA AB B AAB ABAA AB B AA BBB BA AAA BBAABB AABA ABAA AB BBA BBBAAA ABBBB BA AAAB ABBBB AAAAA ABBBB BAAA ABAA AAABB BB AAABB AAAAA AAAAA AAAAB BBA AAABB

把“A”换成“.”,把“B”换成“-”,得到:

代码语言:javascript
复制
-.-. --- -. --. .-. .- - ..- .-.. .- - .. --- -. ... --..-- ..-. .-.. .- --. ---... .---- -. ...- .---- ..... .---- -... .-.. ...-- -- ...-- ..... ..... ....- --. ...--

解密摩斯密码,得到:

CONGRATULATIONSFLAG1NV151BL3M3554G3

真正的 flag 是:flag{1NV151BL3M3554G3}

这里因为格式不对,浪费了几个金币查看 writeup,结果 writeup 也没说格式,还是自己试出来的

12、base64stego

这个题接触了一种叫 base64 隐写的类型

python2 解密脚本:

代码语言:javascript
复制
#coding=utf-8
def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in xrange(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res

def solve_stego():
    with open('1.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)
            print diff
            pads_num = steg_line.count('=')
            if diff:
                bin_str += bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str += '0' * pads_num * 2
            print goflag(bin_str)

def goflag(bin_str):
    res_str = ''
    for i in xrange(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i + 8], 2))
    return res_str

if __name__ == '__main__':
    solve_stego()

高手进阶区

1、Excaliflag

使用 Stegsolve 在蓝色通道为0的时候发现 flag

2、签到题

base64 -> 凯撒 -> 栅栏

注意根据题目背景,是SSCTF,凯撒的时候看到 ssC 选择那一个进行栅栏

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈冠男的游戏人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档