免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!
“社工库”是运用社会工程学进行渗透测试时候积累的各方面数据的结构化数据库。
环境介绍
①Host:Fedora(English)(server),win8(中文)
②Fedora安装apache,Mysql Workbench,语言包(Fedora安装时选择)。
③Database:Mysql 安装在Fedora, 建库/表统一编码UTF8,修改my.cnf中的datadir=单独的一个分区,tmpdir=空间足够大的空间( > 16G)。
④Win8:安装了notepad++,Navicat。
MySql配置如下:
/etc/my.cnf
[mysqld] skip-name-resolve #datadir=/var/lib/mysql datadir=/home/data/mysql/ tmpdir=/MysqlTemp/ #socket=/var/lib/mysql/mysql.sock socket=/home/data/mysql/mysql.sock user=mysql default-character-set = utf8 max_allowed_packet = 200M net_buffer_length = 65536 wait_timeout = 2880000 interactive_timeout = 2880000 symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] socket=/home/data/mysql/mysql.sock [mysqldump] socket=/home/data/mysql/mysql.sock [mysqladmin] socket=/home/data/mysql/mysql.sock
着重修改datadir, tmpdir, socket。
可能有的同学还用txtSearch,我觉得实在是有点慢,还…
准备篇
① txt体积不超过400M的一律先转化成UTF-8编码格式(8G内存图形化可以使用Notepad++)
② 检查txt中是否有 "(双引号) '(单引号),会导致意外终止。(还有其他原因后面提到)
③ 如果遇见分割成碎小体积的多份带有编码格式的txt,使用linux下的cat * > 1.txt时会出现编码问题(这也就是为什么先执行第一条),其实windows可用type * > 1.txt搞定。(注: windows下type *源文件和目标文件要保持不同目录,windows下的命令工具确实有点渣。咳~)
④ sql格式的文件,建表时检查是否有索引,删除之,导入后再建,其速度回提高不少。
数据导入篇
①sql文件,删除key `user` (user) ;之类索引后,mysql执行source xxx.sql 导入,不用考虑编码问题,入库后直接使用workbench或nevicat编辑数据库属性转UTF8编码即可,然后再添加索引。
②txt文件(使用tab间隔,回车换行),select into outfile txt / bcp 可以使用mysql命令load data infile a.txt into table test.a;(默认缺省FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' ,行缺省LINES TERMINATED BY '\n' STARTING BY '')
③txt文件(非tab的规律间隔符),可以使用操作简单的Navicat 导入。
④txt文件(非规律间隔符),使用py处理成有序文本,再使用Navicat 导入。
上图是不规则的空格+tab,下图编写代码处理下。
偶遇几个异常,统计下看看所占比例。
except:
count=count +1
来看看处理后的结果。
⑤关于mssql转mysql
㈠MySQL-Migration-Toolkit
㈡Mssql to Access then access to MySQL
㈢BCP then Load data local infile txt into table xx;
Win(mssql) cmd执行
bcp "select * from dbname.dbo.info" queryout info.txt -c -x -S127.0.0.1 -Usa -P123.456 或者 bcp dbname.dbo.info out info.txt -c -x -S127.0.0.1 -Usa -P123.456
Fedora(MySQL)执行
mysql -u root -p use test; Load data local infile "/home/info.txt" into table xx;
⑥EmpireBak帝国备份王
apache部署EmpireBak,设置目录权限。备份数据复制到bdata目录。登陆主界面,先设置参数,连接数据库,然后选择恢复数据选择要恢复的数据库。
优化篇
①数据简化
delete from `XXXX` where mail not like "%@%"; 删除不符合邮件格式的记录 delete FROM `XXXX` where mail is null and length(username)<4; 删除邮件为空并且用户名长度小于4的记录 delete FROM `XXXX` where length(password)<4; 删除密码长度小于4的记录 delete from `xxxx` where mail is null and password=username; ......
②数据去重
方法一
delete from `xxx` where id in (select * from (SELECT min(id) FROM `xxx` group by mail having count(mail)>1) as a);
这是百度文章里 提到的最多的的一条语句。240W的数据处理了3个多小时才删除了19w数据。
方法二
create table tmp_xxx select min(id) as id,mail,password from xxx group by mail,password;
同样的240w数据去重不到两分钟就搞定了。(160w spend 56s )
注:这条命令最容易出现的一个问题是临时空间不足,如果tmp是单独分区空间太小的话,可以修改my.cnf的tmpdir=/otherdir 。保证otherdir空间充足(>16G)。修改otherdir权限,mysql可以访问修改。重启mysql。
③关于查询优化
㈠分清楚精确查询还是模糊查询 ,精确查询例如手机号;模糊查询例如用户名和邮箱。=比like效率高。
㈡模糊查询尽量使用'string%' 来代替'%string%' 。
㈢sql语句中能使用单引号的尽量使用单引号。
㈣如果ID和行数一样,select * from xxx where id=888;可以用select * from xxx limit 887,1;代替(无索引时使用)。
④添加索引
给常用查询字段添加索引,模糊类用BTREE存储类型,精确类用HASH存储类型。
推荐使用Navicat 选择表打开表讯息,选择DDL选项卡,可以清楚看到该表的sql,有无索引一目了然,然后右击数据库名选择它的console功能,来快速添加索引。
ALTER TABLE `XXX` ADD INDEX `inx_username` (`username`) , ADD INDEX `inx_mail` (`mail`) ;
⑤表类型使用MyISAM
MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持。另外MyISAM的索引和数据是分开的,并且索引是有压缩的,内存使用率也就对应提高了不少。
问题篇
①关于利用帝国备份王跨平台恢复所见问题
㈠打开本地页面,显示空白。
帝国备份采用了不是完全标准的php格式(<?php … ?>)书写,用了短标记格式<?…?> ,所以针对解决办法就是配置php.ini,启动短标记格式。
short_open_tag = On
㈡恢复数据时,点击开始恢复,提示参数不对
确保要恢复的数据库名和备份名一样(可在备份文件目录下的config.php查看),确保备份的php源文件有读写权限或者 chgrp apache * -R 。
②PHP 问题
㈠Fatal error: Allowed memory size of 134217728 bytes
最大单线程的独立内存使用量超过了128M。修改/etc/php.ini
memory_limit=512M
㈡时区错误问题
修改/etc/php.ini
date.timezone = Asia/Chongqing
㈢mysql默认位置修改
修改/etc/php.ini
mysql.default_socket = /home/data/mysql/mysql.sock
㈣Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT)
查询的几个表之间,字符编码不统一,不能在当前页面显示。转UTF8。
③sql 加密, hex
④MySQL 问题
㈠[Err]Got a packet bigger then 'max_allowed_packet' bytes
百度之,max_allowed_packet = 500M 但是错误依然没有解决。 (那些只知道转载的坑货)
来看看错误提示,居然是一个双引号? 请看准备篇第2条。
㈡MySQL server has gone away
百度之:一、可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。(又是这一套,我#$%&#*~)
二、应用程序(PHP)长时间的执行批量的MYSQL语句,超过了mysql的 wait-timeout时间。
修改/etc/php.ini
wait_timeout=2880000 interactive_timeout = 2880000
但是问题还是没解决。我的实际操作过程中遇到过几次,大部分是这两种情况。
Α使用MySQL Workbench向1700W条数据添加索引时。
Β使用Navicat 去重时。
那么使用Terminal 看看。
麻麻再也不用担心MySql离我而去了。
㈢SQL文件带索引导入的,要检查index是否有效。
建议篇
①基于各种数据库层数不穷的泄露,除了密码算法要各种加强外,我们自己的密码也要既有复杂性,又有迷惑性。例如 I1O0'",|/\r\n;
②数据库和web脚本也要考虑到扩展性,不同来源的表都要单独的建立一个新表。
③web页面上对于每张表的查询时间可帮助你精确定位。
④关于数据优化,我建议入库时保留regip,优化时采用如下语句来优化。
select regip,count(*) group by regip order by count(*) desc;
本条语句作用,你懂得,不用谢我。然后怎么做,你也懂。
实例
实例一
以2014-9-11国外某论坛流出来的gmail-5000000.txt文件为例。
1.检查字符UTF-8,检查单双引号,既有单引号又有双引号还有波浪号。(看来国外有些人的密码意识很强)
2.分隔符是":" ,统计":"个数比行数多好几万。明显有部分人密码中带有":"。(不能简单的用Navicat解决)
3.简单修改py脚本替换gmail.txt第一个出现的冒号为\t。
嗯,一个都不能少。
实例二
以图为例
1.分隔符采用 “—-”,统计“—-”个数。 (居然还有人用这个当密码?)
2.navicat不能采用2位以上的分隔符。
3.先建表,然后采用load data local infile方法。(别忘了转UTF8 ,当然入库转也可以)
Load data local infile `/home/xx/Desktop/b14.txt' into table `tn` fields terminated by '----';
what!这么多警告,来看看是什么鬼。
垃圾邮箱这么多…
数据优化来一套:
delete from xxx where mail like 'aaaaaa%' and password like '111111%';
delete from xxx where id in(619665,618512,615362,606705,591547,571497,514328,509353,509349,509345,509342,494415,374357,346237,281087,255543,236556,227425,226934,22391,190644,161981,160870,132437,112240,86570,14403,9667); ......
自己看情况脑补。
以上的所有问题,全是实际操作中所遇到,如果你也遇到过,来,点个赞。 3Q
*作者:iframe,本文属FreeBuf原创奖励计划,未经许可禁止转载
-
这不就是linux下安装lamp环境的教程么?后来导入俩被爆的库,删除无用表。
-
1111亿行数据毫秒级都没好意思拿出来晒,你们城里人真会玩
-
赞一个,其实就是把数据导入数据库,并且优化的一个过程,不错不错,顺便求一下你所有的裤子,testxssing3@163.com 谢谢。

不容错过
- 开源扫描仪的工具箱:安全行业从业人员自研开源扫描器合集Shun2017-05-22
- 信息安全行业洗牌观察记SSW2016-11-03
- 八百元八核的服务器?二手服务器(工作站)搭建指南(下)Push丶EAX2017-04-07
- 国产开源内网信息收集工具v1.0小歪2015-01-29
0daybank
已有 29 条评论
这不就是linux下安装lamp环境的教程么?后来导入俩被爆的库,删除无用表。
赞一个,其实就是把数据导入数据库,并且优化的一个过程,不错不错,顺便求一下你所有的裤子,testxssing3@163.com 谢谢。
亿行数据毫秒级都没好意思拿出来晒,你们城里人真会玩
赞一个,其实就是把数据导入数据库,并且优化的一个过程,不错不错,顺便求一下你所有的裤子,1416618367@qq.com 谢谢。
亿行数据毫秒级都没好意思拿出来晒,你们城里人真会玩。
@ 你们城里人真会玩。 你们农村人真会说
@ h3h2 你们城里人真会玩。
@ 你们城里人真会玩。 我作为大山里的孩子就不参合了
@ xss 我作为郊区的娃我也不馋和了
求社工库地址
赞
暗月的社工库 亿行数据毫秒级
哎 最让人头疼的就是去重啊
赞一个。
这个之前也遇到了,差不多类似解决方法。
再补充点心得:
可以使用分表分库存储社工库,算法自己定,我是以user字段的前两个字符做分表依据,比如aa开头的通通分到一个表里。(搜索最频繁的是user列,所以这样分表可以避免索引整个库,遇到账号为aa开头的直接查询aa表就可以了,简直是秒查。当然,此方法对其他列无效。)
网上收集乱七八糟社工库多了,经常遇到已经导入过的裤子重复导入问题,我是建立一个表记录待导入的裤子的哈希值,每次导入数据库前,先匹配哈希值是否已经存在,存在的话就说明此库已有。当然,这有漏网之鱼,但是能排除大部分重复的裤子,占点容量无所谓啦。
不够高端,没有亮瞎我的眼。。
首先,freebuf当众发这种搭建社工库(泄漏网民信息的系统)的教程,不怕出事吗?
二,还给钱奖励了,好像很赞同这种做法呢?
@ Jumbo 刀在坏人手里才能杀人。社工库在渗透测试很有用,另外wamima.com这种密码风险提示的社工库网站对网民也是有益的,所以你认为这篇文章有问题,可能恰恰说明你心术不正
@ 北京大屌 道德绑架都出来了,66666
@ Jumbo 按你的说法乌云早出事了……那么多犯罪教程……
@ Jumbo 柯南需要禁播。今日说法也是
建议不要用记事本打开这么大的文件,用类Unix处理文本就好
@ flytosking vi也不建议用,会卡死的
www.tingmima.com 试试这个社工库 渗透必备
看了这篇文章,我只想说,你的库能共享下吗?雷锋……
好复杂 走人
当数据量大到一定程度时,es,lunches,solr就有用了
且行且珍惜:jingyun.pw
http://www.baidu.com/link?url=zMXfxjlUgXGPzF1xqBCXrnLb_J8fPxLNdzq40DvpRJm&wd=&eqid=c4882d60000801bd00000004562c0f73 这里的社工库还行
400M以上 用EmEditor,G级别照样打开,但是你电脑配置要好。