Home

Wechall-XSS

2019/04/05

Htmlspecialchars

试了下发现转义了双引号但没有转义单引号
Input:111' onmouseover='alert(111)
弹框:
image
查了下htmlspecialchars()相关资料发现当flags参数为默认的ENT_COMPAT时,仅编码双引号而不编码单引号。
image
将flags参数ENT_QUOTES添上通过:

echo "<a href='http://".htmlspecialchars(Common::getPost('input'),ENT_QUOTES)."'>Exploit Me</a>";

Yourself PHP

username参数输入被过滤了,看了下源码
image

$_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
image

Payload:https://www.wechall.net/challenge/yourself_php/index.php/"><script>alert(1)</script>