2019-01-03-xss_challenge

1.第一题没啥拦截和编码,直接显示,源代码如下:

ini_set("display_errors", 0);
$str = $_GET["name"];
echo "

欢迎用户".$str."

"; payload:
2019-01-03-xss_challenge_第1张图片
p1

2019-01-03-xss_challenge_第2张图片
p2

2.第二题的源代码如下:

$str = $_GET["keyword"];
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

"."
payload:">"这是直接把前面标签闭合的意思

可以看到进行html特殊字符的编码,经过测试以后发现,浏览器进行所谓的URL编码,然后发送到服务器端解码以后进行HTML实体编码,对',",<,>,&符号进行编码,注意单引号编码不是默认的,然后返回前端被浏览器解析,还原成xss payload弹窗,所以这是html编码只能防范存储型漏洞的意思?


2019-01-03-xss_challenge_第3张图片
p3

先看下去
3.第三题源码如下:

$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
payload: 123456' onfocus=alert(document.domain) autofocus//查了一下,网上说这个autofocus是当页面加载时自动获得焦点,然后onfocus是指定获得焦点时应该触发的事件.

显然是做了代替,去掉了所有的大于小于号,那就只能用事件触发了.
4.第四道同三
5.源代码如下:

$str = strtolower($_GET["keyword"]);
$str2=str_replace("没有找到和".htmlspecialchars($str)."相关的结果.".'
payload:1">