首页
社区
课程
招聘
[原创]XX招聘-登陆密码分析
发表于: 2019-10-8 09:21 6630

[原创]XX招聘-登陆密码分析

2019-10-8 09:21
6630

话不多说,直接抓取登陆请求:

POST https://mi.xxx.com/android/My/LoginPostPassport?d=5677860f-ce3b-4bda-b2ae-9fd6454d6850&channel=360yingyong&v=7.91&key=135486907212185&t=1531747877&e=8abe76f88a49f281610ebf90059d4563 HTTP/1.1
user_id: 
user_location: 
user_latlon: null;null
device_name: Nexus 5
device_platform: android
device_id: 5677860f-ce3b-4bda-b2ae-9fd6454d6850
device_network: WIFI
device_resolution: 1080:1776
device_time: 2018-07-16 21:31:17
version_name: 7.91
version_code: 791
build_number: 0
channel_id: 360yingyong
Content-Length: 44
Content-Type: application/x-www-form-urlencoded
Host: 
Connection: Keep-Alive
User-Agent: kooxiv
Accept-Encoding: gzip

password=a67266746b6568&userName=13800138000
HTTP/1.1 210
Server: openresty
Date: Mon, 16 Jul 2018 13:31:17 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 109
Connection: keep-alive
Cache-Control: private
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET

{"User":null,"NeedVerifyCode":false,"StatusCode":210,"StatusDescription":"账号不存在,请重新输入"}
看来重点就在于sprintf(&s, "%2x", v6 + v4);语句
那么,我们来分析下这条语句
sprintf()函数用于将格式化的数据写入字符串,其原型为:
    int sprintf(char *str, char * format [, argument, ...]);

【参数】str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。
参数str   是保存结果的char*,
参数"%2x"  x代表以十六进制形式输出,2表示不足两位,前面补0输出
那么重点来了
v6 + v4是什么鬼?
注意看,伪代码中有while循环,内部有个break语句
说明它其实是个for循环,循环的次数就是密码的长度
当循环第一次时
V6,就是密码首位的byte值
V4,就是"EA4A702427934604867F6726FFA189370C0E9C3573AF4806B759773C4DD1ED6A"首位的byte值
最后转换成hex数据,
这就是为什么,输入密码a123456,加密后变成14位的原因
  1. 密码输入的是a123456
  2. 查看apk没加壳 直接拖入jadx反编译分析,最后确认它是使用so里的encryptPwd方法进行加密的密码
  3. 废话不多说,直接上IDA 为了便于查看代码,直接F5查看伪C代码
  4. 函数很简洁,只调用了一个encrypt_pwd,点击进去看一看
  5. 这里又调用了一个encrypt_pwd_elementat,作用如上图中的注释
  1. 好了,分析到这里完成,我们去用C 还原一下加密过程:
  2. 输出结果与抓取的请求一致
  • 密码输入的是a123456

  • [注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

    最后于 2019-10-10 11:00 被Lunction编辑 ,原因:
    收藏
    免费 1
    支持
    分享
    最新回复 (8)
    雪    币: 3239
    活跃值: (2588)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    2
    感谢大佬分享
    2019-10-8 10:24
    0
    雪    币: 2194
    活跃值: (1001)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    3
    算法过于简单,且密文可逆。
    2019-10-8 10:50
    0
    雪    币: 626
    活跃值: (1067)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    4
    智联的?这么渣啊!
    2019-10-8 11:36
    0
    雪    币: 5596
    活跃值: (2173)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    卧槽,md5都不会嘛
    2019-10-8 15:56
    0
    雪    币: 220
    活跃值: (18)
    能力值: ( LV3,RANK:30 )
    在线值:
    发帖
    回帖
    粉丝
    6
    抓包内容都不打码呀。
    2019-10-9 14:13
    0
    雪    币: 9348
    活跃值: (1825)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    7
    kingdog 抓包内容都不打码呀。
    很早的版本
    2019-10-9 14:40
    0
    雪    币: 105
    活跃值: (4447)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    8
    password=a67266746b6568&userName=13028919000
    这 你的手机号?
    2019-10-10 09:33
    0
    雪    币: 9348
    活跃值: (1825)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    9
    zzpydwz password=a67266746b6568&userName=13028919000 这 你的手机号?
    随便找的
    2019-10-10 11:01
    0
    游客
    登录 | 注册 方可回帖
    返回
    //