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}
    

    图三

  • 相关阅读:
    如何对一台服务器进行免密操作
    MySQL 中的自增主键
    mysql 添加多版本数据库
    Group by 优化
    join 查询优化
    CCF2020-09-Python题解
    CCF2019-09-Python题解
    CCF2019-12-Python题解
    CCF202006-Python题解
    差分约束
  • 原文地址:https://www.cnblogs.com/rabbittt/p/13292242.html
Copyright © 2011-2022 走看看