设计网站无锡,创建网站模板,廊坊网站群建设,个人做的网站能备案吗我们使用第一关的测试方法尝试一下,打咩
直接看源码#xff0c;看到#xff0c;尝试一下闭合
?php
ini_set(display_errors, 0);
$str $_GET[keyword];
echo h2 aligncenter没有找到和.htmlspecialchars($str).相… 我们使用第一关的测试方法尝试一下,打咩
直接看源码看到尝试一下闭合
?php
ini_set(display_errors, 0);
$str $_GET[keyword];
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel2.php methodGET
input namekeyword value.$str.
input typesubmit namesubmit value搜索/
/form
/center;
?
看一下这个函数htmlspecialchars 查看源码 可以看到在h2 /h2标签之中的恶意代码被编码了。
其中和都被编码成了html字符实体。
猜测在服务器端用htmlspecialchars()函数对keyword参数的值进行了处理。
接着往下看可以看到插入到value参数值中的恶意代码并没有被编码而是直接原样返回
但是问题是这里的js代码在标签属性值中浏览器是无法执行的。
既然上面的恶意代码被编码了那么只能从属性值中的恶意代码处进行突破了。
要想浏览器执行这里的弹窗代码只需要将属性的引号和标签先闭合就可以了。
将keyword的参数值重新赋值scriptalert(xss)/script// 左边的去闭合原先的 右边的//去注释原先的
可以看到浏览器成功弹窗了说明我们提交的恶意代码被浏览器执行了。
去服务器端看看level2.php代码 箭头1处将get方式传递到服务器端的keyword参数的值赋给str变量。
在箭头2处是用htmlspecialchars()函数对变量str进行处理之后显示到网页上。
在箭头3处却是直接将变量值插入到了input标签的value属性值中
因为这里并没有对敏感字符进行编码和过滤所以可以通过构造实现XSS攻击。