Htmlspecialchars
试了下发现转义了双引号但没有转义单引号
Input:111' onmouseover='alert(111)
弹框:
查了下htmlspecialchars()相关资料发现当flags参数为默认的ENT_COMPAT时,仅编码双引号而不编码单引号。
将flags参数ENT_QUOTES添上通过:
echo "<a href='http://".htmlspecialchars(Common::getPost('input'),ENT_QUOTES)."'>Exploit Me</a>";
Yourself PHP
username参数输入被过滤了,看了下源码
$_SERVER[‘PHP_SELF’]漏洞
$_SERVER[‘PHP_SELF’]是一个服务器端的系统变量,会返回当前PHP文件相对于网站根目录的位置地址
比如这道题的地址为:https://www.wechall.net/challenge/yourself_php/index.php
那这道题的$_SERVER[‘PHP_SELF’]值就为/challenge/yourself_php/index.php
当访问https://www.wechall.net/challenge/yourself_php/index.php/111时,并不会报错,并且$_SERVER['PHP_SELF']的值为challenge/yourself_php/index.php/111
Payload:https://www.wechall.net/challenge/yourself_php/index.php/"><script>alert(1)</script>