猿人学比赛第五题-双向认证分享

查看 84|回复 9
作者:darbra   
前言
这次和紫星大佬组队,获得了猿人学-Android端爬虫比赛的第一名。


0001.png (223.9 KB, 下载次数: 0)
下载附件
2022-5-17 17:04 上传

在此先说一句:紫星大佬牛逼!
比赛链接:https://appmatch.yuanrenxue.com/
获取key
第五题是双向认证,拿出珍藏的脚本tracer-keystore.js试试。
function hookKeystoreGetInstance() {
    var keyStoreGetInstance = Java.use('java.security.KeyStore')['getInstance'].overload("java.lang.String");
    keyStoreGetInstance.implementation = function (type) {
        //console.log("[Call] Keystore.getInstance(java.lang.String )")
        console.log("[Keystore.getInstance()]: type: " + type);
        var tmp = this.getInstance(type);
        keystoreList.push(tmp); // Collect keystore objects to allow dump them later using ListAliasesRuntime()
        return tmp;
    }
}
下载地址:https://github.com/FSecureLABS/android-keystore-audit/blob/master/frida-scripts/tracer-keystore.js
打开app,点击第五题,就出来bks证书的密码了。


0002.png (178.33 KB, 下载次数: 0)
下载附件
2022-5-17 17:04 上传

bks到p12的转换
接着打开神器keystore-explorer,进行bks到p12的转换。
下载链接:https://keystore-explorer.org/downloads.html
打开clientCA.bks


0003.png (128.49 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

输入前面hook到的密码


0004.png (139.79 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

转成p12


0005.png (183.17 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

导出证书


0006.png (158.48 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

抓包
效仿以前抓soul包的方式,将较早之前生成的p12证书导入charles。


0008.png (211.88 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

发现提示密码错误。


0013.png (114.61 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

【PS:就在我还在对密码错误怀疑人生的时候,紫星巨佬说到:为啥一定要抓包?然后他就搞出结果了。。】
那换种思路,用神器r0capture试试。
下载链接:https://github.com/r0ysue/r0capture
运行神器后,请求流程自吐了出来。


0009.png (361.48 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

POST请求
url是...:*/api/app5
Content-Type是application/x-www-form-urlencoded
User-Agent是okhttp/3.14.9
data是page=1
脚本书写
带上之前转化成功的p12证书,构造刚刚得到的请求,结果就呼之欲出了。
import requests_pkcs12
def get_page(page):
    url = 'https://*.*.*.*:*/api/app5'
    hd = {
        'Content-Type':'application/x-www-form-urlencoded',
        'user-agent': 'okhttp/3.14.9'
    }
    data = {
        'page': page
    }
    resp = requests_pkcs12.post(url,
                headers=hd, data=data, pkcs12_filename='1.p12',
                pkcs12_password='**********', verify=False)
    print(resp.json())
get_page(1)
答案呼之欲出了。


0012.png (223.53 KB, 下载次数: 0)
下载附件
2022-5-17 17:05 上传

队友紫星大佬的52pojie:https://www.52pojie.cn/home.php?mod=space&uid=358970
紫星大佬的github:https://github.com/zixing131
本人收藏了很多优秀文章:https://github.com/darbra/sperm
本人还有些可复现的案例:https://github.com/darbra/sign

下载次数, 下载附件

menghen   


darbra 发表于 2022-5-17 21:29
不知道啊 charles 小黄鸟都不行 但用脚本行

这个问题很奇怪 貌似是charles的问题 估计是跟openssl 生成的版本有关系
darbra
OP
  


menghen 发表于 2022-5-17 22:30
这个问题很奇怪 貌似是charles的问题 估计是跟openssl 生成的版本有关系

小黄鸟 也不行啊大佬
我是不会改名的   

darbra老师带带吧!
[i]
darbra
OP
  

[i]
[i]
Drawlone   


正己 发表于 2022-5-17 17:31
darbra老师带带吧!

正己大佬带带我
darbra
OP
  

所以密码为啥错误
menghen   


Drawlone 发表于 2022-5-17 20:55
所以密码为啥错误

不知道啊 charles 小黄鸟都不行 但用脚本行
啊杰啊   


darbra 发表于 2022-5-17 23:21
小黄鸟 也不行啊大佬

试试Burp呢
我是不会改名的   

大佬666啊 带带DD呀
您需要登录后才可以回帖 登录 | 立即注册

返回顶部