文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python http post 登

2023-01-31 07:03

关注

网站调戏 

http://uugoc.com/login

账号  739639550     

密码  123456         开始调戏 

谷歌浏览器  F12 j进入调戏模式

输入账号密码    点击登录 

 

 多出一个  叫做

http://uugoc.com/tools/ssc_ajax.ashx?A=Login&S=uugc&U=739639550

看里面的  Form Data

username   739639550 账号没问题  哎     密码怎么变了 

ec6d0fc6a7d3e6ee6f5ce25adad36f2c  ε=(´ο`*)))唉 莫非这就是传说的 md5     兴致冲冲的  进行了一个  123456 的md5运算

123456 =e10adc3949ba59abbe56e057f20f883e

现实告诉我太年轻- -  简直进入死局  不晓得如何加密如何撬开人家的门牙???  经过几轮大神的咨询 发现   谷歌是支持调试模式的

进入源码模式 

通过之前的分析 搜索 ssc_ajax.ashx       结果漂亮 不亏是我挑选的弱鸡 网站  一条 - - 点进去分析

点击之后 上面的代码乱的 跟鬼一样    点击  {} 能看到他的美 - -   

点击边上变色 进入断点模式   

 

点击登录 发现 断点  的确 是在这里 

而且密码已经加密完成

往上看  找找在哪开始没有加密

找到开始的位置进行 断点

并没有进行加密 说明 整个加密的方式 就在这个 函数里面

 

 

 var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}
          , a = (new Date).getTime()
          , s = "Register" !== t.Action && state.UserName || t.UserName;
        if (void 0 !== e.wait)
            var c = layer.msgWait(e.wait);
        if (t = o(t),
        t[1] && console.log(t[1]),
        t = t[0],
        t.Password || t.SafePassword) {
            var u = t.Password && "Password" || t.SafePassword && "SafePassword"
              , d = n("IVK");
            if (!d)
                return (c || "0" == c) && layer.close(c),
                RootApp.getServerTime(),
                {
                    then: function(t) {
                        t({
                            Code: -1,
                            StrCode: "请重试"
                        })
                    }
                };
            var h = ["SetPassForget", "VerifySafePwdForget"];
            s = h.indexOf(t.Action) > -1 && sessionStorage.getItem("UserName") || s;
            var v = (s + "").toLocaleLowerCase();
            if (t[u] = G(["SetPwd", "SetSafePass", "Register", "SetPassForget"].indexOf(t.Action) === -1 ? G(v + G(t[u])) + d : v + G(t[u])),
            t.Type = "Hash",
            32 !== t[u].length)
                return (c || "0" == c) && layer.close(c),
                {
                    then: function(t) {
                        t({
                            Code: -1,
                            StrCode: "请重试"
                        })
                    }
                }
        }
        var p = l(t.Action);
        if (p)
            return {
                then: function(t) {
                    t({
                        Code: -1,
                        StrCode: "操作失败"
                    }),
                    layer.close(c)
                }
            };
        t.SourceName = "PC";
        var _ = _ajaxDatajoint(t);
        if ("GetInitData" !== t.Action) {
            for (var y = 0; y < j.length; y++) {
                if (j[y][0] + 300 < a) {
                    j.length = y;
                    break
                }
                if (j[y][1] === _)
                    return (c || "0" == c) && layer.close(c),
                    {
                        then: function() {
                            console.log("重复发送")
                        }
                    }
            }
            j.unshift([a, _])
        }
        return new m.default(function(n, l) {
            var u = state.turning && setTimeout(function() {
                var e = "网络请求超时,请重试";
                i({
                    msg: e
                }),
                _catch({
                    msg: "timeout",
                    A: t.Action,
                    U: s
                }),
                l()
            }, 1e4)

 

抠出 当前函数代码 进行分析t

通过分析发现  账号进行了一个 大写转换小写的动作     保存v

 

然后分析代码真正的 进行计算  

 if (t[u] = G(["SetPwd", "SetSafePass", "Register", "SetPassForget"].indexOf(t.Action) === -1 ? G(v + G(t[u])) + d : v + G(t[u])),
            t.Type = "Hash",
            32 !== t[u].length)

 

t[u]  是Password   进行密码的赋值   如果长度不等于 32  返回错误

G()就是md5的计算   

v 账号

第一次md5 

第二次md5   很明显是    账号加   123456md5在做一次  md5

v + G(t[u]))   账号 +md5(password)      739639550 +md5函数(123456)         

然后在进行 md5

+

上次的md5 +77921299(这是 d的一个值 加盐)

运算结束 太挑出来

那么套路是    账号大写转 小写    进入 md5(  md5( 账号+md5密码))+盐)  然后模拟测试 一下 上代码      

python3 的代码    

ok 密码的加密方式搞出来了      但是 这个盐是 动态的    那么分析方式是一样的  做一个    盐的动态生成  即可完成 自动化加密密码的方式      下次更新 盐的动态加密    未待续。。。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯