第十一课、抓包环境安装与HTTPS.C/S校验原理

第十一课、抓包环境安装与HTTPS.C/S校验原理

  • https://mp.weixin.qq.com/s/ahPbBSfkkBsv4oy265rI2Q

Charles设置

  • 我们首先要把Charles当做一个SOCKS5的代理服务器,所以要先设置SOCKS5代理服务器。打开Proxy设置选项,开启SOCKS服务器,我这里开启的端口为8889,也可以随意填写。
  • image-20230219154633508

Burp Suite设置

在Proxy中的options选项中设置Web代理端口,设置完成后,点击确定。

image-20230219154924599

Postern设置

在手机上打开Postern应用,设置SOCKS5代理服务器的地址,连接到Chalres服务器,让所有的数据包都通过Chalres的SOCKS5服务器,这样就能保证数据包不会丢失。

图片

vpn规则设置:我这里设置为所有地址都需要走SOCKS5代理服务器。

  • 多了一个ip 在网络层抓包 不是应用层
  • ip route show table 0 |grep default 查看路由表

虚拟机设置

image-20230219155359972

image-20230219155425415

image-20230219155528178

  • 路由器新分配ip到虚拟机
  • 本机ping手机
  • image-20230219155931414
  • 保证了手机、虚拟机、本机的ip在同一个网段
  • 安卓7开始要把证书放在根目录

HTTPS原理部分

  • HTTP(80) + 加密 + 认证 + 完整性保护=HTTPS(443)

  • 查看远程端口

    1. 找到PIDps -e |grep chrom
    2. 查看端口lsof -p 8803 |grep TCP
  • https 使用多重混合加密

image-20230219171443121

配置charles证书到根目录

cd /data/misc/user/0/cacerts-added/

mount -o remount,rw /system

cp * /etc/security/cacerts/system

mount -o remount,ro /

Https服务器校验客户端

  • 在服务器上部署对app内置证书的校验代码。

  • 单一通信已经分裂成两个互相独立的通信,这时候与服务器进行通信的已经不是app、而是Charles了,所以我们要将app中内置的证书导入到Charles中去。

  • 这个操作通常需要完成两项内容:

    1. 找到证书文件
    2. 找到证书密码
  • 找到证书文件很简单,一般apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径,当然也有一些app比较“狡猾”,比如我们通过搜索p12没有搜到证书,然后看jadx反编译的源码得出它将证书伪装成border_ks_19文件,我们找到这个文件用file命令查看果然不是后缀名所显示的png格式,将其改成p12的后缀名尝试打开时要求输入密码

  • 想要拿到密码也很简单,一般在jadx反编译的代码中或者so库拖进IDA后可以看到硬编码的明文;也可以使用下面这一段脚本,直接打印出来,终于到了Frida派上用场的时候。

  • function hook_KeyStore_load() {
        Java.perform(function () {
            var StringClass = Java.use("java.lang.String");
            var KeyStore = Java.use("java.security.KeyStore");
            KeyStore.load.overload('java.security.KeyStore$LoadStoreParameter').implementation = function (arg0) {
                console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
                console.log("KeyStore.load1:", arg0);
                this.load(arg0);
            };
            KeyStore.load.overload('java.io.InputStream', '[C').implementation = function (arg0, arg1) {
                console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
                console.log("KeyStore.load2:", arg0, arg1 ? StringClass.$new(arg1) : null);
                this.load(arg0, arg1);
            };
    
            console.log("hook_KeyStore_load...");
        });
    }
    setImmediate(hook_KeyStore_load)
    
  • 有了证书和密码之后,就可以将其导入到抓包软件中,在Charles中是位于ProxySSL Proxy SettingsClient CertificatesAdd添加新的证书,输入指定的域名或IP使用指定的证书即可

  • img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 京东登录请求参数包括: - loginname: 登录名, 可以是用户名或者手机号码. - nloginpwd: 登录密码. - chkRememberMe: 是否记住登录状态, 值为"on"表示记住, 否则为"off". - authcode: 验证码. 在登录时如果系统检测到异常登录行为, 会要求用户输入验证码. 这些参数需要放在请求的参数中(query string 或者 request body) 发送给服务器. 例如: ``` POST https://passport.jd.com/new/login.aspx loginname=myusername&nloginpwd=mypassword&chkRememberMe=on&authcode=1234 ``` 注意: 使用登录功能时应遵守京东的相关规定, 不得使用不正当手段进行攻击或者恶意操作. ### 回答2: 要模拟京东登录请求参数,首先需要了解京东登录接口的要求和参数格式。通过访问https://passport.jd.com/new/login.aspx可以得知登录接口为POST请求方式,需要的参数包括用户名、密码以及验证码等。 具体的请求参数可以通过查看页面源代码或者使用Fiddler等工具进行抓包分析。经过分析可得到以下参数: 1. 用户名:username,用于传递用户登录的手机号、邮箱或用户名。 2. 密码:password,用于传递用户的登录密码。 3. 验证码:authcode,用于传递用户登录时输入的验证码。注:验证码可能不是必要参数,可根据具体情况判断是否需要包含。 对于以上三个参数,需要根据具体用户输入进行相应的处理和加密算法生成。在模拟登录请求时,需要构建一个POST请求,传递相关参数到目标登录接口地址。 示例代码: ```python import requests # 构建登录请求参数 username = 'your_username' password = 'your_password' authcode = 'your_authcode' # 构建请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36' } # 构建请求体 data = { 'username': username, 'password': password, 'authcode': authcode } # 发送登录请求 response = requests.post('https://passport.jd.com/new/login.aspx', headers=headers, data=data) # 处理登录结果 if response.status_code == 200: # 登录成功 print("登录成功") else: # 登录失败 print("登录失败") ``` 以上代码仅为示例,实际使用时需要替换为真实的用户名、密码和验证码,并根据实际情况处理登录结果。另外,需要注意登录请求头的User-Agent部分,可以根据具体的浏览器版本和操作系统进行模拟。 ### 回答3: 京东登录请求参数可以通过分析登录页面源代码获得。通过访问地址https://passport.jd.com/new/login.aspx,并查看页面源代码,可以找到登录表单的相关参数。 登陆请求参数通常包括以下几个重要的字段: 1. 登录方式:使用"loginType"字段,取值为"1"代表账号密码登录,取值为"2"代表短信动态密码登录。 2. 用户名:使用"username"字段,传入用户的登录用户名。 3. 密码:使用"password"字段,传入用户的登录密码。 4. 手机动态密码:使用"sms_code"字段,在短信动态密码登录方式时需要传入。 5. 验证码:使用"verifycode"字段,在需要输入验证码时传入。 6. 记住登录状态:使用"remember"字段,取值为"true"则表示记住登录状态,取值为"false"则不记住。 注意:以上参数只是常见的一部分登录请求参数,具体参数可能还会根据京东登录页面的更新而有所变化。在实际模拟登录过程中,还需要注意表单的提交方式(通常为POST请求)以及数据的编码方式等。 另外,为了确保模拟登录的成功,还需要处理登录过程中可能遇到的各种异常情况,比如输入错误的用户名密码、验证码错误等。可以通过抓包工具查看实际登录请求和响应数据,根据返回结果进行相应的处理。 总的来说,模拟京东登录请求参数是一个比较复杂的过程,需要根据具体的页面设计和业务逻辑进行分析和调试,以确保成功模拟登录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值