前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python http post 登

python http post 登

作者头像
py3study
发布2020-01-06 16:18:59
6070
发布2020-01-06 16:18:59
举报
文章被收录于专栏:python3

网站调戏 

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档