[CISCN2019 华东南赛区]Web11

"本文探讨了在CISCN2019华东南赛区的Web11挑战中,如何利用Smarty模板引擎的漏洞Smartyssti,通过X-Forwarded-For头构造 SSTI payload。作者介绍了如何绕过废弃的{php}
摘要由CSDN通过智能技术生成

[CISCN2019 华东南赛区]Web11
在这里插入图片描述
头一次见smarty ssti的题

smart ssti:
smart是php的模板引擎,模板引擎的作用就是分离前端页面和数据的,题目中显示API的URL由于环境的原因无法使用,但我们的IP依旧显示在了页面的右上角,且根据它的提示XFF我们很容易想到,在X-Forwarded-For里构造ssti:payload。

又祭出这张图了:
在这里插入图片描述
根据页面的提示,很可能要在XFF头中构造:
测试:
在这里插入图片描述
确实存在smarty ssti
看了另一位师傅的wp:

Smarty支持使用{php}{/php}标签来执行被包裹其中的php指令,那么我们可以使用{php}{/php}标签来构造payload,但是本题会报错
因为现在的smart已经不用此标签了。
可以用{$smarty.version}来看一下版本。

测试了一下,的确如此
在这里插入图片描述
在这里插入图片描述
这个版本已经不支持php标签了

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

既然全部的PHP条件表达式和函数都可以在if内使用,那我们在里面写php代码也行。 {if phpinfo()}{/if}

执行 {if phpinfo()}{/if}尝试
在这里插入图片描述
成功回显
直接执行命令:{if system('cat /flag')}{/if}
在这里插入图片描述
原理介绍,参考另一位师傅的wp里的:

<?php

require_once('./smarty/libs/' . 'Smarty.class.php');

$smarty = new Smarty();

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
//获取XFF

$smarty->display("string:".$ip);
//此处并不是以smart模板格式,而是以字符串形式,所以会解析我们的标签,也就是if,解析后把内容回显到页面上的相应位置
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值