1.反射型XSS(get)
直接
输入,input框长度不够可以在查看器里面修改
2.反射型XSS(post)
你可以先注册一个用户,然后在用户方的input框输入xss注入内容
3.存储型XSS
针对于类似与留言板,评论区类的,可以使用存储型的xss进行注入
在 textarea 区域直接输入
4.DOM型XSS
DOM(文件对象模型):将脚本写进html文档内部,我自己的理解就是说我在输入框输入的内容不会返回给服务器,而是直接在前端js处理,直接用HTML.inner更改内容用的;
<script>
function domxss(){
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see? </a>";}
//试试:'><img src="#" οnmοuseοver="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
</script>
看下页面源代码就是说我们可以改‘str’处的值,eg:
javascript:alert(“hack”)
’ οnclick=“alert(‘xss’)”>
'>
说白了就是将他闭合,然后触发alert()事件
5.DOM型XSS-X
源代码:
<script>
function domxss(){
var str = window.location.search;
var txss = decodeURIComponent(str.split("text=")[1]);
var xss = txss.replace(/\+/g,' ');
// alert(xss);
document.getElementById("dom").innerHTML = "<a href='"+xss+"'>就让往事都随风,都随风吧</a>";
}
//试试:'><img src="#" οnmοuseοver="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
</script>
<a href='#' onclick='domxss()'>有些费尽心机想要忘记的事情,后来真的就忘掉了</a>
这道题的关键在于domxss()方法里面的innerHTML这段话,就是对xss进行注入,跟上一题一样;eg:
'>
’ οnclick=“alert(‘xss’)”>
javascript:alert(1)
6.XSS之盲打
在我看来这个一般用于客服反馈,就是说你在提交反馈信息时注入一个alert()到后台管理服务器中去,当后台管理员去打开反馈界面时我们注入的alert()就会弹出,然后一旦管理员点击了alert(),我们就可以获取管理员的Cookie信息,然后就可以进一步获取相应权限
eg:
<div class="main-content" xmlns="http://www.w3.org/1999/html">
<div class="main-content-inner">
<div class="breadcrumbs ace-save-state" id="breadcrumbs">
<ul class="breadcrumb">
<li>
<i class="ace-icon fa fa-home home-icon"></i>
<a href="../xss.php">xss</a>
</li>
<li class="active">xss盲打</li>
</ul><!-- /.breadcrumb -->
<a href="#" style="float:right" data-container="body" data-toggle="popover" data-placement="bottom" title="tips(再点一下关闭)"
data-content="登录后台,看会发生啥?后台登录地址是/xssblind/admin_login.php">
点一下提示~
</a>
</div>
<div class="page-content">
<div id="xss_blind">
<p class="blindxss_tip">请在下面输入你对"锅盖头"这种发型的看法:</p>
<p class="blindxss_tip">我们将会随机抽出一名送出麻港一日游</p>
<form method="post">
<textarea class="content" name="content"></textarea><br />
<label>你的大名:</label><br />
<input class="name" type="text" name="name"/><br />
<input type="submit" name="submit" value="提交" />
</form>
</div>
</div><!-- /.page-content -->
</div>
</div><!-- /.main-content -->
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cEWlKT6E-1665425026912)(C:\Users\Mark\AppData\Roaming\Typora\typora-user-images\image-20220507010242106.png)]
在文本框里输入 进行注入
7.XSS之过滤
直接用大小写替换,毕竟html兼容性比较强,可以用大小写转换来绕过过滤
eg:
8.xss之htmlspecialchars
htmlspecialchars()这个方法主要是应对html特殊字符的,但不对‘单引号做处理,所以你就明白了吧,嘿嘿嘿。
所以我们主要对中的text修改,进行提前闭合函数等方法完成alert()
<div class="page-content">
<div id="xssr_main">
<p class="xssr_title">人生之所有苦短,是因为你的xss学习的还不够好</p>
<form method="get">
<input class="xssr_in" type="text" name="message" />
<input class="xssr_submit" type="submit" name="submit" value="submit" />
</form>
<p class='notice'>你的输入已经被记录:</p><a href='οnclick=’alert(1)‘'>οnclick=’alert(1)‘</a> </div>
</div><!-- /.page-content -->
9.xss之href输出
javascript:alert(hack)
这道题没看源代码我做不出来,看着源代码就知道我们要改的时message值,所以在 < a href=‘…’ javascript:alert(“hack”)>
10.xss之js输出
先分析:
<script>
$ms='asd';
if($ms.length != 0){
if($ms == 'tmac'){
$('#fromjs').text('tmac确实厉害,看那小眼神..')
}else {
// alert($ms);
$('#fromjs').text('无论如何不要放弃心中所爱..')
}
}
</script>
有这个我们就可以看出来,我们输入input的文本框中的值反馈到了$ms变量,所以通过修改ms值来alert()一个弹框。
我写的是复杂了点
'
你可以放进去看看,就知道了,看这个图
<script> $ms=''</script>
<script>alert("hack")</script>
<script>$a='';
if($ms.length != 0){
if($ms == 'tmac'){
$('#fromjs').text('tmac确实厉害,看那小眼神..')
}else {
// alert($ms);
$('#fromjs').text('无论如何不要放弃心中所爱..')
}
}
</script>