charles 爬虫贝壳短信 API 接口迷惑

2019-08-13 15:03:44 +08:00
 u3985567

curl -H 'Host: app.api.ke.com' -H 'Authorization: MjAxODAxMTFfaW9zOjc1YzNiY2MzMWYwNzg5MzBjNWNiYjZmMDJmOWVmZTQxYzRiMWE0Y2Q=' -H 'Lianjia-Im-Version: 1' -H 'Accept: /' -H 'Lianjia-Version: 2.14.0' -H 'Device-Info: scale=3.0;screenwidth=1125;screenheight=2436' -H 'Lianjia-Timestamp: 1565679371.828276' -H 'Accept-Language: zh-Hans-CN;q=1' -H 'Referer: profile' -H 'extension: lj_idfa=C95766CA-1F9D-4C0F-A587-559BFD6CFD15&lj_idfv=9E0D1ED3-94E2-44E9-8F33-5A99F541D740&lj_device_id_ios=1BF89208-F7BC-4E9B-A66A-04D4F57ED3A5&lj_keychain_id=7C23282D-08D3-4039-9364-003DA5B3ACB4&lj_duid=D21zC1MRpc/pnWifBLXRSU1jniDxchicq1Xn79RBiTsHYXe3' -H 'Page-Schema: register%2Ffastlogin' -H 'Lianjia-City-Id: 330100' -H 'User-Agent: Beike 2.14.0;iPhone10,3;iOS 12.1.4;' -H 'Cookie: lianjia_uuid=1BF89208-F7BC-4E9B-A66A-04D4F57ED3A5; lianjia_ssid=7EA763B1-D19F-47F3-97E4-1EAA3AD1224D; lianjia_udid=7C23282D-08D3-4039-9364-003DA5B3ACB4' -H 'Lianjia-Device-Id: 7C23282D-08D3-4039-9364-003DA5B3ACB4' --compressed 'https://app.api.ke.com/user/account/sendverifycodeforbindmobilev2?mobile_phone_no=13758218569&request_ts=1565679371'

charles 爬到的 curl 地址,再次访问显示操作成功,但是只要修改手机号 mobile_phone_no 或者时间戳 request_ts 立马返回无效请求,有没有大神知道这个后台是怎么校验的

2040 次点击
所在节点    问与答
7 条回复
python35
2019-08-13 15:27:44 +08:00
有一个 Http 头字段是 Authorization,base64 解开是 20180111_ios:75c3bcc31f078930c5cbb6f02f9efe41c4b1a4cd,冒号后面的部分长度为 40 位,猜测是包含手机号和 Ts 的 sha1 摘要,可能加了盐,作为参数的校验值,防止参数被篡改
hkitdog
2019-08-13 15:34:23 +08:00
MjAxODAxMTFfaW9zOjc1YzNiY2MzMWYwNzg5MzBjNWNiYjZmMDJmOWVmZTQxYzRiMWE0Y2Q
Decode 后是一个魔改过的签名算法,之前搞过安卓版本,签名算法写在了加固过的 so...最后就没搞了
u3985567
2019-08-13 15:49:20 +08:00
@python35 大佬,贝壳这种骚操作是不是可以替代图形验证码 防止短信攻击了
daquandiao2
2019-08-13 16:07:15 +08:00
接口签名防篡改 请求参数进行某种 hash 算法,服务端会校验签名,你篡改了肯定不会通过,除非你逆向 app,知道如何进行 hash 的,然后自己构造
locoz
2019-08-13 16:09:30 +08:00
里面有加密参数,需要逆向 APP,我没见过这个 APP 所以不清楚具体难度如何,你可以先拿 inspeckage 试试,不会用的话可以翻一下我之前写的文章,里面有个 APP 加密参数破解 [秒破篇] 。
python35
2019-08-13 16:11:13 +08:00
如二楼所说,在 Android 上面一般计算过程放在加固的 so 里面,在 ios 里面应该也差不多,破解难度较高,我以前写应用的时候也会这么干,设置一个参数作为校验,并且会加上一个时间戳参数 ts 校验,如果服务器的时间戳与客户端得时间戳相差过大则 拒绝这个请求来防止参数重放攻击
teacherxiong
2020-01-13 09:13:25 +08:00
我现在正在做这个,想请教你几个问题,有时间还请回复下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/591508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX