近期打的一些线下赛总结

最近打了一些线下赛,虽然大部分时间都是在坐牢,但姑且学了一些新东西值得记录

巅峰极客决赛

这个比赛主要打是多层内网渗透,服务器和服务器之间点对点连接,得搭很多层代理,非常麻烦,多层代理的话我已经写过一篇博客了,不过用chisel搭多层代理卡壳了有点,后面有机会在补一点。然后就是一些关于内网和域渗透的知识点,之前也写过一个Kerberos协议总结了,这次去兰州和yulate以及疏狂师傅聊渗透的时候听说现在内网票据新出了个蓝宝石票据和钻石票据,后面找时间补充到Kerberos协议那篇博客里去。

这比赛里印象最深刻的就是那个水坑攻击了,dmz区拿服务器权限然后rdp上去可以用wireshark抓流量,抓流量可以发现内网区有一台电脑会定时访问该服务器的网络服务,并且使用的Chrome浏览器存在RCE漏洞,所以可以在网站源码写入payload上线内网区主机,值得注意的是那个办公网主机里有火绒,所以用CS生成payload的话得先本地免杀一下,常见杀软免杀后面也找个机会写一写。不过当时那个网站环境里其实还有xss,所以预期解应该是用xss上线办公网主机。

祥云杯决赛

赛制是awdp+ctf,我是社会组,第一天打的awdp第二天打的ctf,题目挺难的,断网环境下能做出来都是神仙我只能说。

ctf只有一道misc,且题目比较抽象,具体wp可以看雪殇的2022祥云杯决赛 misc Twin Shadow题解,考点主要是单压缩包可以对应两种密码——咄咄怪事,不同密码居然可以成功解压同一个 ZIP 文件 (zhihu.com),还有一个就是mp3的private_bit隐写,这两个东西我都没遇到过,自然也没做出来,令人感叹。

还有两道web难度也蛮大

第一个web有个改密码功能,你选择忘记密码会向邮箱发验证口令,所以抓个包把邮箱改了就能发到自己那里,但当时那样得到的口令只能改自己的密码不能改管理员的密码,卡在这里就不回了,结果最后官方改密码思路是个什么http参数污染+条件竞争,令人感叹,还是遇到过的场景太少了,不过看edi的wp也没啥条件竞争啊,不知道是不是非预期 edi安全_祥云杯,另一个Java纯审0day完全不会了,似乎是零解,这里就略过了。

awdp的话也是只有两道web,第一道web从修复上看不难,主要就是sql注入,但是他那个源码是被混淆过的,测,所以我当时完全做不来,赛后知道有个工具能解:https://github.com/ganlvtech/php-enphp-decoder,令人感叹。

另一道web就抽象到极致了,放线上赛都能当压轴题了,放线下断网让我们做是不是有点抽象了,直接贴wp吧

陇剑杯决赛

我主要在做取证和流量分析,第一天ak了,第二天有几个题没做出来。取证分析的话主要还是看工具,这次出了个wmware加密,字典是rockyou,我估计是想让我们用pyvmx-cracker爆破,结果大伙都没这个工具,没几个队做出来,令人感叹,后面主办方把密码字典范围缩小到了500,慢慢手试也就出来了,取证做起来还是比较简单,ak了。

流量除了嗯看还得准备一些常见流量解密脚本啥的,比如这次的shiro key,爆破shiro key:https://github.com/Potato-py/shiroTool 解密脚本:

import re
import base64
from Crypto.Cipher import AES

# Author:zev3n 2021.01.16


def b64_padding(data):
    missing_padding = 4 - len(data) % 4
    if missing_padding:
        data += '=' * missing_padding
    return data


def bytesToHexString(bs):
    return ''.join(['%02X' % b for b in bs])


def extract_data(data):
    reg_exp = r"(?:(?:rememberMe=)|(?:^))\b([A-Za-z0-9+\/=]*)(?:;|$|\s)"
    reg_pattern = re.compile(reg_exp)
    try:
        original_value = reg_pattern.search(data).group(1)
        print(data)
        if len(original_value) < 100:
            print('[-]长度过短,请检查您的输入!')
            exit(0)
        decoded_b64 = base64.b64decode(b64_padding(original_value))
    except AttributeError as err:
        raise AttributeError("[-]未识别格式,请检查您的输入!", err)
    except Exception as wtf:
        print("[-]错误:", wtf)
        raise
    return decoded_b64


def brute_decode(keys, data):
    iv = decoded_b64[0:AES.block_size]
    is_find = False
    for b64_key in keys:
        b64_key = b64_key.strip()
        try:
            cipher = AES.new(base64.b64decode(b64_key), AES.MODE_CBC, iv)
        except ValueError:
            continue
        try:
            result = cipher.decrypt(decoded_b64[AES.block_size:])
        except ValueError:
            raise ValueError("输入数据有误")
        if(result.startswith(b'\xac\xed\x00\x05')):
            # print(result)
            is_find = True
            break
    if is_find:
        return b64_key, iv, result
    else:
        print("解密失败")
        exit(0)


def display(choice, key, iv, data):
    print(f"key(base64编码后):{key}; IV(HexString):{bytesToHexString(iv)}")
    print("=" * 40)
    if choice == '1' or choice == '':
        print(data)
    elif choice == '2':
        print(re.sub(r'[\x00-\x1f\x7f-\xff\ufffd]',
                     '.', data.decode('ascii', 'replace')))
    elif choice == '3':
        print(bytesToHexString(data))
    elif choice == '4':
        print(base64.b64encode(data).decode())
    else:
        raise ValueError("请输入正确的选项(数字)")


def read_keys(keys_file):
    with open(keys_file, 'r') as rf:
        keys = rf.readlines()
    return keys


if __name__ == '__main__':
    keys_file = 'shiro_keys.txt'
    keys = read_keys(keys_file)
    input_data=""""""
    decoded_b64 = extract_data(input_data)
    real_key, real_iv, result = brute_decode(
        keys, decoded_b64)  # <bytes> result
    choice = input(
        "请选择输出方式:\n1.默认,将不可见字符转义\n2.将不可见字符替换为[.]\n3.HexString\n4.Base64\n>")
    display(choice, real_key, real_iv, result)
暂无评论

发送评论 编辑评论


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