某音乐类App评论相关API的分析及SQL注入尝试

*本文作者:molibird,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

关键字:APIfen、工具使用、sql注入

涉及工具/包:Fiddler、Burpsuite、Js2Py、Closure Compiler、selenium、phantomjs、sqlmap

摘要:

记录分析某音乐类App评论相关API的过程,以及一些工具/包的基本使用(部分工具对最后尝试没有影响,但在其它场景或许有用),最后结合sqlmap进行注入尝试。本文对于sql注入没有深入展开(水平不够…)。

想法来源:本想写个程序获取零评论的歌曲,去占沙发…分析发现获取评论的POST请求参数有点复杂…既然花时间研究了,顺便进行一下sql注入的尝试。

目录:

一、获取相关代码

1、获取评论的HTTP请求

2、寻找主要JS文件

3、Fiddler:将JS文件替换成本地JS文件 便于调试

4、Fiddler + Burpsuite

5、具体发送请求的JS代码 / 构造参数的代码

二、分析代码:

1、windows.asrsea()函数

2、JSON.stringify(j7c)

3、最关键的加密函数b()

三、用Python完成JS加密函数的功能

1、Js2Py包:直接将JS转换成Python(失败尝试)

2、Closure Compiler:JS简化压缩(失败尝试)

3、selenium + phantomjs

四、sqlmap使用自定义tamper

1、编写tamper

2、sqlmap尝试

五、总结

正文

一、获取相关代码

1、获取评论的HTTP请求

评论的分页功能一般会用到的参数:第几页、获取几条 等等。

但此处POST请求参数并不简单,直接加密成了一长串字符串。

2、寻找主要JS文件

这里的JS文件都是被混淆过的,但如果最后要构造/发送参数,参数名是不能被混淆的。因此,利用参数名encSecKey在JS内容中进行搜索,发现core.js中出现了3次,初步猜测相关的代码都在这里。

3、Fiddler:将JS文件替换成本地JS文件 便于调试

4、Fiddler + Burpsuite对Fiddler 还不熟悉,在这里仅利用fiddler的替换功能,其它查看分析都在Burp中完成。

Fiddler 好像没有Burp的截断暂停/方形功能?

Burpsuite好像没有Fiddler 那么方便的替换文件功能?

只需要将Fiddler设置代理 将流量导向Burp的8080即可。

选择 Tools-Options 打开设置

5、具体发送请求的JS代码 / 构造参数的代码

搜索参数名

进行调试 发现:

bLN7G对象、相关的 window.asrsea()成为关键

对应

对应

浏览器工具输出内容与Burp内容不完全一样,因为burp内容经过了URL编码

二、分析代码:

1、windows.asrsea() 函数

函数:

返回一个固定长度的随机字符串,后续的a(16)可以直接取16个a,”aaaaaaaaaaaaaaaa”。

函数即 函数

其中的函数传入的3个参数都是常数,猜测就是一个常数,用抓到的请求包中的参数值直接代替,发现页面成功响应说明猜测正确。

到目前为止,的有效参数只剩下第一个

2、JSON.stringify(j7c)

和评论API相关的 就是

在代码中直接修改 :

发现页面获取的评论 出现偏移(首页热门评论消失,时间排序从第2条开始获取)。

到这里就和平时进行sql注入的情形很像了。

3、最关键的加密函数b()

发现对象的内容绕来绕去…代码量太多(这里就不贴出来了,太占篇幅)

想要寻找简单点的办法

三、用Python完成JS加密函数的功能

1、Js2Py包:直接将JS转换成Python(失败尝试)基本使用:

注意:Js2Py无法识别JS用法:

使用发生错误,还有很多JS的用法Js2Py不能识别。

想先将JS进行简化,再进行转换尝试。

2、Closure Compiler:JS简化压缩(失败尝试)

智能模式如下 JS代码:

压缩后:自动删除所有无用的代码

注意:Compiler无法识别JS非严格模式的用法

解决办法:

1、被弃用:给函数增加一个函数名

2、修改为

简化压缩后,再次尝试Js2Py的转换,依然失败…

被混淆的JS代码,暂时没能力去修改到复核Js2Py的格式。

只能换个思路:Python调用浏览器,让浏览器去执行JS

PyV8,没安装成功…

3、selenium + phantomjs

selenium 结合 浏览器(比如Firefox需要下载 geckodriver)

selenium 结合 phantomjs(类似:不显示内容的浏览器) 速度更快

第一步、下载phantomjs、geckodriver并将路径添加到系统的PATH环境变量

第二步、本地服务器创建php文件,利用原有的JS进行加密然后输出:

第三步、selenium结合phantomjs:

四、sqlmap使用自定义tamper

1、编写tamper

2、sqlmap尝试

五、总结:

使用selenium效率肯定没有直接Python直接加密好,但对于混淆过的JS代码,可以省去很大的分析精力…对于类似存在加密的场景,也可以快速进行尝试。

对于应用开发来说,即使在前端对参数值进行加密,后端在使用中依然需要进行过滤。

*本文作者:molibird,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

本文来自企鹅号 - FreeBuf媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Micro_awake web

同源策略和跨域解决方法

第一部分:同源策略:same-origin policy 1.同源策略的由来: 1995年,同源策略由Netscape(曾经的浏览器霸主,拒绝微软收购请求,被I...

2277
来自专栏小狼的世界

PHP性能监测的工具介绍 - XHProf

这个软件本是Facebook内部的一个应用工具,2009年3月份开源,为PHP的性能监测提供了很好的工具。官方的介绍中提到:

673
来自专栏angularejs学习篇

angularjs学习第四天笔记(第一篇:简单的表单验证)

您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指...

791
来自专栏大内老A

为自定义配置的编辑提供”智能感知”的支持

当我们在设计一个框架的时候,必然会涉及一系列的配置。为了让使用者更好地使用你提供的框架,让他们能够容易地维护这些配置是一项基本的要求。对于一些配置过于复杂的框架...

1967
来自专栏ascii0x03的安全笔记

SEED缓冲区溢出实验笔记——Return_to_libc

参考:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Return_to_libc/      ht...

3106
来自专栏IMWeb前端团队

测试工具mocha用法小结

这篇是前段时间总结给自己备忘的,要用到的工具实在太多,没法一一记住。 个人感觉,作为一个测试的工具,只要会用就好了。 所以这里稍微做了一些修改,简单介绍一下常用...

2500
来自专栏极客猴

Django 学习笔记之初识

上篇文章讲述 Django 环境搭建, 在文章最后部分还有 6 篇 Django 简单入门的文章。后来我自己以一个新手的角度来阅读文章,发现前面三篇文章能被够消...

361
来自专栏信安之路

二进制漏洞学习笔记

这个程序非常简单,甚至不需要你写脚本,直接运行就能获得shell。 写这个程序的目的主要是为了使第一次接触漏洞的同学更好地理解栈溢出的原理。

700
来自专栏ytkah

你能用微信小程序打开小程序了【附开发方法】

  6月21日晚间,微信小程序再次迎来升级:小程序可以打开小程序了,同一个公众号下关联的10个同主体小程序和3个非同主体小程序之间,可以调用接口直接相互跳转。微...

3439
来自专栏腾讯IVWEB团队的专栏

通过ffi在Node.js中调用动态链接库(.so/.dll文件)

由于公司许多公共的后台服务已经有了非常成熟的C/C++编写的API,以供应用程序调用,node.js作为在公司内新兴的后台runtime在调用这些公共服务的时候...

7680

扫码关注云+社区