JavaScript 劫持 JSONP 请求

在某些 XSS 场景中我们需要劫持页面中的一些请求,前端页面中主要使用 XHR 来上报/获取数据。但是在一些对兼容性要求很高的 PC 端页面,网络请求可能是通过 JSONP 的方式发送的,如果是 XHR 请求就很简单,直接第三方页面上的 XHR 对象就可以拿到请求或响应的数据,如果是 JSONP,就不能直接拦截了,但是可以通过一些巧妙的方式来实现。

拦截 JSONP 首先我们得知道他是如何工作的,简而言之就是直接在 head 标签动态插入一个 script 标签,然后在 url 上带上需要执行的回调函数名称,script 标签发起一个不受同源策略限制的 GET 请求,服务端将返回的数据塞给回调函数作为参数,然后页面上直接就执行对应的回调函数。所以要劫持 JSONP 请求我们需要做到:

  • 捕获请求发送的时机以及获得请求的参数;
  • 重写页面上已经定义的回调函数,步获传入的参数;
  • 重新执行页面上正确的回调函数,保证之前的逻辑正常。

Read More

比特币数据结构科普

地址

私钥由 32 字节随机数组成,通过私钥可以计算出公钥,公钥通过一系列 hash 和编码(Base58,避免书写混淆如I和L)可以得到比特币地址,可以简单的将地址理解为公钥的摘要。

# 比特币使用了椭圆曲线签名算法
私钥 => 公钥 => 比特币地址

Read More

过去的 2017

现在已经是 2018 年的 3 月份了,按照以往的惯例,每年到年终的时候都会更新一下博客,总结一下过去一年的学习与生活,由于去年比较懒,这篇文章迟迟没有写,一直推到了现在。过去的一年经历了太多的事情,从学生到职场人的角色转变,从重庆到北京。一路走来,很艰辛也很快乐。

Read More

awk 入坑指北

awk(/ɔːk/) 是 *nix 下一种强大的文本处理工具,其名称取自三位作者 Alfred Aho,Peter Jay Weinberger,Brian Wilson Kernighan。awk 提供的功能包括不仅限于正则匹配、流控制、算术运算、甚至于函数等编程语言具备的一些特性。它发行于 1977 年,已经超过了 40 岁堪称古董级软件。为了更让人能直接明白它的用途,我把它称为是命令行下的 Excel,其中的一些概念和 Excel 有很多相似之处。

Read More

关于自由软件与开源协议

在 GitHub 上浏览一些开源软件时,我们经常会看到 README.md 文件下会有一个关于 License 的声明,或者有一个单独的 LICENSE文件来说明该软件或者类库是基于什么协议开源的,你能拿他做什么不能做什么。或许是因为习惯了在Google 或者 Stackoverflow 上找到一份代码就开始使用的缘故,很多人不会留意这些软件是基于什么开源协议开源的。比如广泛使用的 jQuery,大家都在用,也没有任何人说直接复制了或者更改了 jQuery 源码产生衍生软件会有什么问题。但是在开发商业软件的过程中如果需要用到开源软件,它使用的何种开源协议对你的软件有直接或者致命的影响。

Read More

CPU挖矿-利用VPS挖莱特币

前段时间疯狂的WannaCry蠕虫病毒再一次将比特币带入大众视野,导致最近挖矿的人越来越多,AMD 显卡甚至都脱销还出现了专门的矿机。之前也还没有写过关于区块链技术的博客,后面打算有时间写两篇文章来介绍一下我对区块链技术的认识以及与比特币相关的一些东西。本文主要介绍了挖矿的概念,以及如何利用普通服务器的 CPU 来实现莱特币挖矿。

Read More

See U 2016

这篇文章可能不完整

2016年,自己的改变很大,上半年在重庆上学,现在在北京实习。

年初回到学校发现已经是大三下了,也没有很多课,之前寒假在家更多的时候在看一些书,也是那个时候开始喜欢上了阅读。在3月份之前还是以前的状态,每天看下书,逃点课,撸点代码,日常去CFC待着,晚上9点固定去跑5km,周末和室友玩下游戏看下球赛。后面开始准备找实习面试什么的中间穿插着一个CTF的比赛,有时候从CFC回来晚了路过镜湖会拍一张照,不同日期,不同时间点,这段时间更多的是学习吧,自从到了大三基本不主动的参加一些项目开发,对奖学金、学校的一些比赛也基本没有兴趣,我一心只有学习…从大一到大三接触的东西其实挺多的,当时看到js社区圈非常活跃和新的es标准出来nodejs的广泛应用,相对php和android自己更加熟悉,现在才感觉进入了fe大坑。

Read More

Redux中间件与异步Action

在之前的浅谈Flux架构及Redux实践一文中我们初步的谈及了Redux的数据流思想,并做了一个简单的加减器。但是还没有接触到Redux更多常用的场景,异步操作、API调用,如何连接到UI层等,Redux可以与很多框架搭配包括Vue、React甚至是纯JavaScript。后面我们会用一个实例–通过github API获取个人信息,来将Redux middleware、async action、连接到React贯穿其中。先看看我们最后写的demo的样子。

/images/redux-demo.png

Read More

浅谈Flux架构及Redux实践

Flux概述

Flux是Facebook用来构建用户端的Web应用程序的体系架构,与其它形式化的框架相比,它更像是一个架构思想,用于管理和控制应用中数据的流向。这里应用中的数据指包括但不限于来自服务端的数据页面中view的一些状态(如一个面板是展开还是关闭),临时存储在本地需要持久化到服务端的数据等。

好了,说了这么多好像还是一脸懵逼,不慌,接下来看看展开式。

clipboard.png

Read More

实现一个简单的HTTP Client

httpclient-cli

Linux下用C语言实现发送HTTP请求并获取html文档内容的CLI程序

理论基础

HTTP请求报文格式

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

Read More