配置
官网:https://pentesterlab.com/
下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso
安装方法:虚拟机按照,该靶场是封装在debian系统里,安装完成打开,ifconfig查看ip地址:
然后直接访问ip即可
web for pentester默认没有root密码,可以来设置密码,方便ssh连接等查看源码
sudo passwd
第一关
查看源码:
分析:
没有任何的过滤,直接将get获取的打印
payload:
第二关
查看源码:
/","", $name);
$name = preg_replace("/<\/script>/","", $name);
echo $name;
?>
分析:
这里通过preg_replace()函数来正则,但是这种匹配是有缺陷的,没有匹配大小写,可以通过大小写绕过
payload:
/xss/example2.php?name=
第三关
查看源码:
/i","", $name);
$name = preg_replace("/<\/script>/i","", $name);
echo $name;
?>
分析:
在第二关的基础上加了/i,使之匹配不区分大小写,preg_replace()函数将匹配到的,替换成空格,但是只匹配了一次,类似sql注入(Seselectlect),可以嵌套ript>
第四关
查看源码:
Hello
分析:
对script进行了不区分大小写,匹配如果匹配到,就执行die("error"),终止程序,所以scirpt不能用,只能通过其他标签来触发js事件,可使用onerror事件,来执行js
payload:
/xss/example4.php?name=
第五关
查看源码:
Hello
分析:
对alert进行了过滤
一.可以使用类似alert的方法来弹窗比如confirm,prompt
二.通过编码绕过,String.fromCharCode()编码来绕过,可以使用hackbar来快速编码
payload:
/xss/example5.php?name=
/xss/example5.php?name=
/xss/example5.php?name=
第六关
查看源码:
分析:
通过get的方式传入name变量,输入赋值给全局变量a,可以通过闭合双引号或者注释双引号来增加我们的js代码
payload:
/xss/example6.php?name=";alert('xss');"
/xss/example6.php?name=";alert('xss');//
第七关
查看源码:
分析:
和第八关相似htmlentities()会把字符转换为HTML实体,会将双引号进行编码,但不编码单引号,这里使用的是单引好所以可以继续包含和注释
payload:
/xss/example7.php?name=';alert('xss');'
/xss/example7.php?name=';alert('xss');//
第八关
查看源码:
分析:
name变量通过form表单以post方式传入,然后通过htmlentities函数实体化后输出来,并未找到破解的方法。然后观察
,用户可控制参数PHP_SELF,并且没有闭合引号和标签payload:
/xss/example8.php/">//
/xss/example8.php/" onclick=alert('XSS')//
第九关
查看源码:
分析:
payload:
/xss/example9.php#
注意:在火狐和Chrome浏览器<>会被自动转码
参考文章
https://www.sqlsec.com/2020/05/pentesterlab.html
https://blog.csdn.net/qq_20307987/article/details/51284169
欢迎访问我的个人博客:https://lmg66.github.io/