XSS-lab通过教程🐶
XSS-lab通过教程??
Level-1
payload:http://192.168.33.222:40577/level1.php?name=
Level-2
- 我们随便输入
123
,查看闭合方式
我们可以构造闭合input
标签,如何加入script
语句
payload:">
Level-3
- 首先我们用第二关的payload去尝试,发现显示是一样的,但是没有执行我们的js代码
- 查看源码
我们发现使用了htmlspecialchars
方法,它的作用是将特殊字符转换为html实体。那么什么是HTML实体呢?
说白了就是HTML为了防止特殊符号。例如:
特殊字符 | 转化后 |
---|---|
& | & |
" | " |
< | < |
> | > |
这时候我们的思路就尽量要绕开使用新标签,那么浏览器还有一些事件可以执行js代码,如onfocus,onblur等,下面简单介绍一下关于鼠标事件的一些能引用js代码的函数:
属性 | 描述 |
---|---|
onclick | 当用户点击某个对象时调用的事件句柄 |
onmouseenter | 当鼠标指针移动到元素上时触发 |
onmouseover | 鼠标移到某元素之上 |
payload:' onclick ='javascript:alert(123)'//
注意:我们用的是点击事件,所以我们输入payload之后鼠标还得点击一下输入框才能触发代码
level-4
首先我们发现前端页面跟第2关一样,没什么区别,还是这样的
源码分析
# 我们可以看到首先接收参数,然后将<>都替换成了空
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
所有说我们的payload里面不能有<>这两个符号,就不能用了,还是用第三关的payload,只不过闭合方式不一样,这一关是
"
payload:" onclick='javascript:alert(123)'//
level-5
首先还是测试123看看闭合,发现跟第二关依然一样,接下来我们看看源码吧
源码分析
# 获取输入的值,赋给$str变量
$str = strtolower($_GET["keyword"]);
# 将