0.前言

逆向PU校园口袋,逆向用时半天,写文章花了一天。

简单的抓包获取分析api而已。而且这个软件很草台,还是php写的。
相对比较考验对前后端分离软件架构的基本知识。


动机:广告太多,多社团报名,根本来不及签到。

最终网页二维码结果生成展示 (点击展开)

天天用这个软件,应该能看出一些端倪吧😋。用你尖利的眼神去找他的一些细节🤖
也算是运气好。
刚好发现:在PU中 “我的”-"学时"那里是H5页面嵌套。不然就要逆向apk了(更加复杂一些)

H5可比APP要逆向多了。(app可能还有加固什么的)

那么就很简单了,主要思路:直接抓包获取用户信息,去请求二维码接口就行。

1.抓包,获取相关API

为了图方便我直接在实体机(已root)直接抓包。

抓包,就是监听网络数据请求的数据包。L6层(比winshark4层好一些)。

一般用小黄鸟/reqable。伪造系统证书,做全局V**。探测解析SSL包内容数据。

为了方便演示我就用 近几年比较流行的Reqable 了 ,与还能电脑相互连接,就能直接在电脑上面大屏幕显示。

1.对接好后开启抓包后,打开PU校园,可指定页面(能导致那个H5页面刷新获取数据就行)

2.获取到对应数据包列表。很多很乱,主要的都是聚合广告的api。

3.去掉多余的api接口

因为我们已经知道是H5,所以直接保留类似H5资源的相关内容

清理后得到如下

可以看到mobile/apis二级域名,资源后缀是随机内容一猜就是现代化(vue/react)。

大概是mobile前端资源内容。apis就是api接口了。

很经典的前后端分离项目。(用Wappalyer浏览器插件查看)

直接把资源文件API工具里面去

(保持参数一致,不然可能会重定向/屏蔽浏览器用户UA)比如经典的(请在微信中打开就是检测UA实现的)

请求后渲染得到白屏。(看来并不能直接访问)

直接访问对应数据(看起来是一个内部页面)(其中就有二维码页面)

直接丢到API工具里面 发现API工具不支持哈希接口

查询后可知 用 %23 换成 # 就行

设置好参数。请求,发现,依旧不行。

那没办法了,继续找api吧。。。。。

一个一个去找咯。。。。



最终,发现api是靠authorization来验证的。

让API工具模拟请求一下。 (发现请求api成功,那么明确了,就一个authorization就能获验证取信息数据了)
不知道这个校验值的过期时间


那么API工具没办法模拟设置请求头/设备Cookie/Storage/session,该怎么办呢。

2.浏览器工具模拟请求头

网上搜一下,说使用 浏览器插件即可 header cookie qrCode caseRecording httpblock

1.设置浏览器请求头,成功显示二维码界面(我就设置了一个就正常显示了。。。这是不对 伏笔

2.找二维码生成的代码。

很明显Vue的前后端架构,更好找了。

Ctrl+F 在 网路接口搜索。关键字“二维码 生成 / 限时 / 刷新 / 地址”等关键字。

找到对应代码文件。一眼看到加密密钥{长得猎奇一点就行}。

直接在浏览器开发者工具找对应js资源文件。直接打断点,实时运行获取js变量数据。



刷新,设置好请求头 , 很明确了 g() 就是加密函数 (可以看到这里变量:l是空对象Object肯定有问题)

发现就算简单的 DES ECB pkcs7 再看看返回类型,很想base64。直接手动加密。

至少我们知道思路了,把移动端正常的二维码,同样的思路解密。

很简单了直接拼接+加密=》二维码就行

$c $u 都是用户的信息,分别是id,username 都是固定值

那么直接用户信息数据一个api就能获取了。而且一次获取永久有效。。。。。。

太简单了。

最难蹦的是vue页面的$.value获取值都没加的低级bug

app主页生成二维码和h5里面二维码是不一样的,难蹦。

为了方便不要每次都抓包,就直接抓登录接口了。。。。。。

3.抓登录接口

然后抓取登录页面。获取用户的id和username。

对应层次是 $.data.baseUserInfo.id

$.data.baseUserInfo.username

$.data.baseUserInfo.nickname

4.获取到所有数据后,直接ai写在线网页就行。



ai生成页面有bug,那么就多生成几次,这样就得到


这样签到管理员就能直接远程签到了。

抓到的一些的API,其他的自己抓。

https://s.apifox.cn/3cee7351-fbc6-4b09-87d7-8d757d77ed47

ai生成的pu自动二维码的php网站的源码
下载



这个老壁灯软件广告那么多