时间过的真快(。>︿<)一转眼大一就过去了。趁着这个暑假好好补补课,先练习一下XSS注入(ง •_•)ง →练习地址
1、关于XSS攻击:
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
2、XSS类型
1)反射型XSS
反射型XSS只是简单地将用户输入的数据直接或未经完善的安全过滤就在浏览器中进行输出,导致输出的数据中存在可被浏览器执行的代码数据。由于此种类型的跨站代码存在于URL中,所以黑客通常需要通过诱骗或加密变形等方式将存在恶意代码的链接发给用户,只有用户点击以后才能使得攻击成功实施。
2)存储型XSS
存储型XSS脚本攻击是指由于Web应用程序对用户输入数据的不严格,导致Web应用程序将黑客输入的恶意跨站攻击数据信息保存在服务端的数据库或其他文件形式中,当网页进行数据查询展示时,会从数据库中获取数据内容,并将数据内容在网页中进行输出展示,进而导致跨站脚本代码的执行。
3)DOM Based XSS
基于DOM的XSS跨站脚本攻击是通过修改页面。DOM节点数据信息而形成的XSS跨站脚本攻击。不同于反射型XSS和存储型XSS,基于DOM的XSS跨站脚本攻击往往需要针对具体的Javascript DOM代码进行分析,并根据实际情况进行XSS跨站脚本攻击的利用。
3、XSS攻击目的
1.XSS盗取用户信息
2.XSS盗取Cookie
3.XSS钓鱼攻击
4.XSS蠕虫攻击
http://test.xss.tv/level1.php?name= test
该注入产生的原因是由于程序员没有过滤或用引号包裹参数,所输入代码被直接执行,导致形成XSS漏洞。
level 2
右键查看源码,发现
即需要构造闭合代码命令:
http://test.xss.tv/level2.php?keyword=">test
带有标签的GET型XSS需要闭合参数才能进行注入。普通的GET型可直接被解析。
这里接着使用上一关方法注入,但要注意的是表单提交并没有name=writing
的 因此需要把wrting
改成keyword
构造命令:
http://test.xss.tv/level3.php? keyword='>wait
然而并没有成功,产查看源码发现尖括号被解析了
因此这里我们采用 onclick
触发事件 onclick
事件直接包含在<>内,可直接被执行。观察源代码为单引号,把value给闭合掉。
构造命令:
http://test.xss.tv/level3.php? keyword='onclick='javascript:alert(1)'
?注入成功,ps:onclick触发事件需要点击一下输入框才能被触发
这里我们先采取一般的注入方法,发现和上题一样尖括号也被过滤了,接着使用onclick
事件;注意这里的闭合方式为双引号。
Level 5
同样的套路把上面的两种方法都试试,没有成功。查看源码:
发现这里对on
进行了过滤,变成了o_n
,于是我们采用链接的形式进行注入
构造语句:
http://test.xss.tv/level5.php?keyword=">
点一下那个链接就行了,好的,下一关(●’◡’●)
Level 6
这里我么们直接使用上题的注入方式,然后发现
">
alert(1)">
发现这里的href script onclick 都被过滤了 可以尝试下大小写绕过 。
构造命令如下
http://test.xss.tv/level6.php?keyword="ONclick="javascript:alert(1)"
Level 7
同样的用上面三种方法进行注入,发现这题对 on href script 进行了完全屏蔽,但是魔高一尺,道高一丈( ̄︶ ̄)↗ 有人想出了双写绕过法。哈哈哈
构造命令如下:
http://test.xss.tv/level7.php?keyword=">alert(1)
Level 8
这题接着尝试用上述方法试试,发现这题过滤了" < >
,emm… 有点恶心,查看源码发现
这里有个友情链接,可以发现,这里相当于一个标签注入,那么我们直接输入
javascript:alert(1)
试试 ;
可以看到这里script被转义,试试大写绕过,不行;这里介绍一种新的注入方法:HTML字符转换绕过→ 地址 网上一搜一大堆,将script
转换为16进制,10进制也行(还可以使用url编码等其他网页语言)
ps:这里要在输入框内输入。
javascript:alert(1)
好的,下关。
Level 9
直接输入上题代码;发现不行,查看源码
emmm没啥头绪,查看别人的blog知道这需要加http://
构造命令
javascript:alert(1) // http://
ok 下关?
Level 10
尝试了几种方法之后发现 这题很绝,没有输出点
查看源码:
在查看大佬的blog后知道了方法,首先构造代码
&t_link=" text" &t_history="text"&t_sort="text"
测试哪个可以注入
这里t_sort
就是注入点,构造命令(ps:代码中有隐藏的参数设置,把hidden改为text)
&t_sort=" type="text" onclick="alert()
好啦,下面几关需要抓包,暂时还不会,加上近期有点忙,以后有时间补上( ̄︶ ̄)↗ 。