1.搭建靶场后打开第一题
2.点击图片,页面跳转后提示“payload长度为:4”,观察url 存在传参 ?name=test ,且字符长度为4
3.查看网页源码,发现第一个点击图片跳转页面存在用户名提交,且未进行任何过滤,猜测存在xss4.修改name参数,发生弹窗,证明存在反射型xss
1.打开第二题
2.有输入框,尝试使用标签法,在输入框中插入
3.查看网页源代码,在第15行发现,输入的< >符合被HTML字符实体化为 < 和 >,猜测在服务器端对keyword
这个参数使用了htmlspecialchars()
函数,但是value参数中的值未被恶意编码,其中输入的payload
被赋值给value
,可以考虑闭合value
的参数值
4.尝试从标签中的属性进行突破,将属性中的>
和<
进行闭合,输入">//
解题思路:第一次输入时,
17行传参
第二次输入">时,
17行//''>
因为加入" 和// 导致浏览器误认为1行分为三个部分,即第一个标签内value传参为空,
将第二个红色部分当作代码执行,由于加入//,浏览器将最后的紫色部分屏蔽,使页面实现弹窗效果。
//''>
5.弹窗
1.对话框输入
2.查看网页源码,发现与第二题相似,但17行value传参采用单引号闭合,且<>经过HTML字符实体化
猜测keyword
和value
两个参数均使用了htmlspecialchars()
函数
3.由于最后的<
>
均被转义,无法逃出标签,因此考虑事件驱动
输入' οnclick='alert(1) 然后点击“搜索”
解题思路:与level 2类似,都是通过构造语句,欺骗浏览器,使浏览器将value传参视为无,同时将输入的其他东西当作代码执行
当搜索框不输入任何东西时,17行
当输入' οnclick='alert(1) 时,17行value=' ' οnclick='alert(1) '>
浏览器把绿色部分当作代码执行,便出现了之后的点击对话框tan
4.点击对话框,弹窗
1.查看网页源代码,发现传参方式与level 3类似,只是把单引号改成双引号,所以直接套用
level 3的方法,将单引号改成双引号即可。
1.输入测试语句 查看源代码
2.查看源代码发现17行 "> "οnclick="alert(1)
"> xss // 发现标签中的字段都被加入下划线_
2.尝试改变标签大小写"ONCLICK="alert(1) 点击“搜索”,点击搜索框,出现弹窗
1.使用弹窗语句javascript:alert("xss") 检测,查看源代码,发现标签中的双引号被转义处理,且参数
value
中的script
被删除。
使用"οnfοcus=javascript:alert('xss')>// on被删除
使用">xss// href和scrip被删除
使用">xss// 均转化为小写
2.尝试双写绕过">xss// 双写关键字
查看服务器源代码:
1.插入测试语句javascript:alert("xss")
并查看网页源码,提交的参数值一个会插入到标签的
value
属性值中,一个会插入到下方标签的
href
属性值中。标签中
javascript
被恶意添加下划线,参数value
中的双引号被转义
插入"οnfοcus=javascript:alert('xss')>// onfocus
被恶意添加了下划线
闭合语句的引号被编码;onfocus、javascript
均被恶意破坏语义;未删除关键字,则双写关键字绕过也不可以;大小写绕过也不可以;
2.尝试unicode编码测试语句javascript:alert("xss")
编码后:javascript:alert("xss")
1.插入弹窗语句javascript:alert("xss") 查看网页源代码
get方式传参,提交的参数值插入到了标签的value属性值中,发现value值的单引号被转义。
但是在标签的href属性中却并没有出现该参数值,而是显示的 "您的链接不合法?有没有!"
猜测这里可能对url地址做了识别。只有包含正常的url地址才能添加到href属性值中,因此构造一个有正常url地址的恶意代码javascript:alert('xss')http://www.qq.com
发现20行javscript被加入下划线
尝试大小写绕过,尝试双写绕过,尝试unicode全编码,尝试unicode只编码弹窗语句(url不编码)
最终发现只编码弹窗语句可以触发弹窗javascript:
alert('xss
')//http://www.qq.com
查看服务器源码
http://
的话就会返回false
,接着在href
属性值中就会出现"您的链接不合法?有没有!"判断成功后,返回第一次出现的位置,将该字符插入到href
属性值中了1.无搜索框,尝试在url中输入测试语句
并查看网页源码
标签中的
<
>
被转义,并发现了三个标签
2.找不到规律(查看服务器端网页源代码)
$str22说明是接收t_sort参数值的。$str33会删除t_sort参数值中的<>
这一关就只能是将js代码插入到标签的属性值中来执行,而不能通过闭合标签引入新的标签来触发xss了。
t_sort的标签,之前都是隐藏状态,但是通过构造参数响应发现只有它里面的值被改变了。
插入代码在url中的level10?后面插入代码t_sort="οnclick=alert(1) type=text"
出现弹窗