php-security-calendar-2017漏洞分析笔记
Day 1 - Wish List
1 | class Challenge { |
漏洞
任意文件上传
分析
在第12行代码中,因为in_array没有设置strict
比较,则默认使用宽松比较,具体可参考官方手册,所以虽然设置了白名单,但还是可以进行任意文件上传。
1 |
|
Day 2 - Twig
1 | // composer require "twig/twig" |
漏洞
xss
分析
第10行代码经过渲染之后可以防止被标签闭合,第22行filter_var($nextSlide, FILTER_VALIDATE_URL)
是验证url的函数,只需要构造a://b
即可,然后在<a href=''></a>
里面可以用javascript:
伪协议进行js代码的执行,参考A标签使用javascript:伪协议。因为nextSlide是通过GET请求接收的,那么构造javascript://123%0aalert(1)
,这里的//
对于filter_var
函数来说是协议,但是对于js来说是注释,这样可以巧妙的绕过filter_var
函数并且成功执行js代码。因为<a href=''></a>
里面跳转的链接是跳转到浏览器,所以对%0a
再次进行url编码,所以构造javascript://123%250aalert(1)
Day 3 - Snow Flake
1 | function __autoload($className) { |