xsslabs靶机解题_xss-labs-master靶机1-20关解题思路

xss-labs-master靶机是xss-labs作者在github上发布的后来不知道为什么就把它删了,可能是因为这个靶机属于静态页面有一个通用的推广方式(具体在后面),不过还是希望读者使用实战中的攻击手段学习,这个靶机是对XSS漏洞的专项练习,一共有二十关,也是小白的看门砖吧!比如现在的我!大哭!!!!

在这篇文章中,默认读者已有WEB渗透测试相关知识,以及PHP、HTML等相关知识。

xss-labs-master通关宝典

第一关 不使用过滤器

第二关 闭合标签

第三关 单引号闭合并添加事件

第四关 双引号闭合并添加事件

第五关 javascript伪协议

第六关 大小写绕过

第七关 双重书写

第八关 字符实体

第九关 检测关键字存在

第十关 隐藏信息

第十一关 Referer信息

第十二关 user-agent信息

第十三关 Cookie信息

第十四关 exif xss

第十五关 ng-include属性

第十六关 空格==回车

第十七关 合二为一

第十八关 是作者偷懒了吗?还是我悟不出其中的精髓???????

第十九关

第二十关

万能通关秘籍

第一关 不使用过滤器

a、后台代码

window.alert = function()

{

confirm("完成的不错!");

window.location.href="level2.php?keyword=test";

}

欢迎来到level1

欢迎来到level1

ini_set("display_errors", 0);

$str = $_GET["name"];

echo "

欢迎用户".$str."";

?>

echo "

payload的长度:".strlen($str)."";

?>

b、分析

这关只给一个图片,根据图片可以知道这关容易,而链接上有一个参数name,说明突破口再name这里,根据代码我们可以看出,代码是将用户以GET方式提交的参数name,没有做任何防御措施就直接显示在HTML页面中,所以将使用放入name变量中即可。

c、方法

这里就是直接用脚本的就行,没有方法可言。

d、注入语句

http://靶机网址/xss-labs-master/level1.php?name=

第二关 闭合标签

a、后台代码

window.alert = function()

{

confirm("完成的不错!");

window.location.href="level3.php?writing=wait";

}

欢迎来到level2

欢迎来到level2

ini_set("display_errors", 0);

$str = $_GET["keyword"];

echo "

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

';

?>

echo "

payload的长度:".strlen($str)."";

?>

b、分析

这关我们可以发现多了一个文本框,我们先用之前的语句填入文本框里面,发现不行,什么有了防御机制,那么我们看看源代码,它将我们输入的值给了value,然后它再传给了一个htmlspecialchars函数,这个函数是把预定义的字符转换为 HTML 实体,说明把标签吃掉了,那么我们的突破口就在value这里,我们可以通过闭合标签,使得这一句就闭合掉,即在前面加">,对前面input标签进行闭合。

htmlspecialchars函数快查链接:这里

c、方法

这里就是我们使用闭合的方法,就是闭合了标签,产生新的执行语句。

d、注入语句

http://192.168.226.128/xss-labs-master/level2.php?keyword=">

第三关 单引号闭合并添加事件

a、后台代码

window.alert = function()

{

confirm("完成的不错!");

window.location.href="level4.php?keyword=try harder!";

}

欢迎来到level3

欢迎来到level3

ini_set("display_errors", 0);

$str = $_GET["keyword"];

echo "

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

?>

echo "

payload的长度:".strlen($str)."";

?>

b、分析

这个题就是变了个图片,感觉也没什么的,先用之前的代码测试一下,发现没用,看看源码,发现这里不但对"号做了防御,而这小子居然在value这里也加了htmlspecialchars函数,还是逃不过啊!那就刚憋,虽然对了双引号做了防御,但是却放行单引号,这种情况我们可以通过事件标签触发表单执行。

c、方法

这种情况我们可以通过事件标签触发表单执行,即通过使用HTML的事件知识对其注入。

一些常用的HTML标签事件:这里

d、注入语句

http://192.168.226.128/xss-labs-master/level3.php?keyword='οnmοuseοver='alert(/xss/)

第四关 双引号闭合并添加事件

a、后台代码

window.alert = function()

{

confirm("完成的不错!");

window.location.href="level5.php?keyword=find a way out!";

}

欢迎来到level4

欢迎来到level4

ini_set("display_errors", 0);

$str = $_GET["keyword"];

$str2=str_replace(">","",$str);

$str3=str_replace(","",$str2);

echo "

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

';

?>

echo "

payload的长度:".strlen($str3)."";

?>

b、分析

这关和之前几个感觉差不多,同样不能用之前套路了,看看源码,发现这里不但对‘号做了防御,他这次不对value进行过滤,而是用str_replace函数直接过滤掉<>,但是不知道是不是有疏忽,对了单引号做了防御,但是却放行双引号,这种情况我们还是可以通过事件标签触发表单执行。

str_replacestr函数快查:在此

c、方法

这种情况我们可以通过事件标签触发表单执行,不过需要的双引号改成单引号。

d、注入语句

http://192.168.226.128/xss-labs-master/level3.php?keyword="οnmοuseοver="alert(/xss/)

第五关 javascript伪协议

a、后台代码

window.alert = function()

{

confirm("完成的不错!");

window.location.href="level6.php?keyword=break it out!";

}

欢迎来到level5

欢迎来到level5

ini_set("display_errors", 0);

$str = strtolower($_GET["keyword"]);

$str2=str_replace("

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值