zoukankan      html  css  js  c++  java
  • [CISCN2019 华东南赛区]Web11

    [CISCN2019 华东南赛区]Web11

    写在前面

    参考文章:Smarty SSTI

    1.{php}{/php}

    Smarty已经废弃{php}标签,强烈建议不要使用。在Smarty 3.1,{php}仅在SmartyBC中可用。

    2.{literal}标签

    {literal}可以让一个模板区域的字符原样输出。这经常用于保护页面上的Javascript或css样式表,避免因为Smarty的定界符而错被解析。

    PHP5中可用

    <script language="php">phpinfo();</script>
    

    3.getStreamVariable

    这个方法可以读取一个文件并返回其内容,可以用self来获取Smarty对象并调用这个方法

    新版本smarty已将该静态方法删除

    payload:{self::getStreamVariable("file:///etc/passwd")}
    

    4.{if}标签

    Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}. 也可以使用{else} 和 {elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||,or,&&,and,is_array(), 等等

    {if phpinfo()}{/if}
    

    题解

    打开题目观察网页发现是用的smarty模板,同时我们的IP显示在了右上角

    API Usage处直接在url处修改 发现回显在API URI中但是通过尝试发现没啥用

    图一

    利用bp抓包在headers添加

    x-forwarded-for:{2-1}
    

    右上角IP回显为1,找到注入点

    图二

    根据文章中的{if}标签可以读出flag

    {if readfile('/flag')}{/if}
    

    图三

  • 相关阅读:
    使用Anaconda安装TensorFlow
    更新pip源/anaconda源
    PHP 中 config.m4 的探索
    有趣的智力题
    工作中MySql的了解到的小技巧
    一篇关于PHP性能的文章
    eslasticsearch操作集锦
    curl 命令详解~~
    Nginx 调优经验记录
    Elasticsearch安装使用
  • 原文地址:https://www.cnblogs.com/rabbittt/p/13292242.html
Copyright © 2011-2022 走看看