2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

审计代码

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

传入参数a,进入parserIfLabel函数

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

发现参数a的模板,a的格式要匹配pattern,如{if:payload}{end if}

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

可知ifstr是a中匹配的第一组的值,即payload中的值

并且经过danger_key函数过滤

继续往下看

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerupIfstr经过很多过滤替换,最终里面不包含大括号就会进入一个eval语句

漏洞正是出现在这里

往回看danger_key过滤函数

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

好家伙,不仅将一大堆关键字符替换成*,还进行了二次检查

但是可以用var_dump()函数绕过

构造a={if:var_dump(`ls`)}%20{end%20if}

页面出现

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

说明命令成功执行

a={if:var_dump(`ls%20../../../../../`)}%20{end%20if} 进行目录穿越

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

发现flag

a={if:var_dump(`cat%20../../../../../flag`)}%20{end%20if}

查看flag

2020第十三届全国大学生信息安全竞赛创新实践能力赛rceme writerup

上一篇:我的第一个python web开发框架(17)——产品管理


下一篇:2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)