这个世界上普通人还是多的
像你这个年龄段的,既没有学历,也没有钱,也没有背景,最主要的是还没有方向
那你找不到合适的路,肯定是会浪费掉大把的时间的
我自己其实和你也差不多,也是没学历,不过我后面把这个东西补回来了
当时是高中刚毕业,没考好,在学校的时候是打游戏了,天天去网吧通宵
结果就是荒废了学业,导致我找不到自己的路子
但是我还算是运气好的
我一个朋友,他哥是做技术的,当时他哥正好是整了一个新项目,需要带团队,找人手,然后我们都是一些啥都不懂的小白,正好机会合适,他对我们进行了培养
他们是做技术项目的
就是逆向渗透这些的,什么是逆向渗透?
其实就是通常一些人说的黑客类的技术,比如,所谓的游戏外挂,入侵网站之类的
很多人觉得这些技术是违法的,其实不是,如果你稍微了解一些这方面的信息
你就会发现,很多互联网巨头公司,都是拿着高昂的薪资在找这些技术实力强的人

可以看到,1-3年,就能拿到这个水平的薪资

逆向的更高
但是你再去看看开发的

这些就很垃圾了
因为开发岗位是远远的供大于求的,实际情况是展示的与真正的不符合
我们虽然当时什么都不懂,但是带我们的那些技术人员,实力都是很强的,在一线的技术团队里边,最低的也拿到了50k,一个月
这个其实是与市场有很大的关系的
国内的学校,大多数都不会教这些东西,安全类的还会讲一些,逆向方面你想要折腾,只能靠自己一点点的摸索
这也是为什么这两个方向的薪资高的原因
了解到这里,其实你应该有自己的想法
现在是信息时代,脱离了计算机,其实就完全等于在慢性的与社会脱节
你现在22岁,正是掌握技能,改变自己人生的黄金时间段
如果去做一些没有门槛儿的事情,比如,学了个理发,学了个做蛋糕,或者随便找个工作,一个月拿个几千块的工资
那等于是白白把自己的大好时光浪费掉了
随着时间的推移,你与别人的之间的差距会越来越大
建议你还是学一些能够给你带来稳定收入的技术
最次也可以去学个开发
成为一个黑客也是很酷的事情
下面给你说说黑客需要掌握的技术
现在的黑客有不少都是发展一个方向,比如找网站漏洞的就只会找网站漏洞,写病毒木马的就
只会写木马病毒,相对来说技能单一,这些不说了,咱们说说比较强大的黑客需要的基本技术
首先说说基础理论知识:
计算机组成原理、计算机网络、计算机体系结构、计算机操作系统,密码学,多媒体技术等等
这些都需要掌握总之一句话就是大学计算机的基础课程。
然后说说编程: HTML、CSS、JavaScript、 PHP、 Java、 Python、 sql、 C、C++、 shell.
汇编、nosql. powershell等等常见的语言基础都需要掌握,至少要熟练使用Python和sq|,
这些语言都要学习两周到两三个月吧! .
然后说说漏洞,漏洞分很多种,根据不同的标准也会有交叉,黑客要掌握大部分漏洞的形成原
理,检测方法,利用方法,修复方法,常见的网站漏洞有sq|注入,XSS, 文件包含,目录遍
历,文件上传,信息泄露,CSRF, 账号爆破,各种越权等等,常见的二进制漏洞有缓冲区溢
出,堆溢出,整形溢出,格式化字符串等等,分析的时候还要绕过操作系统的保护机制。协议
的话也是存在漏洞的,比如TCP、UDP什么的拒绝服务,DNS劫持,ARP欺骗等等, 现在工
控、物联网、AI什么的也都有各种各样的漏洞
然后说说黑客需要掌握的各种工具,工具太多, -句话吧,基本.上目前主流的客工具都要熟练使用,应该有几十种吧,这边随便说几种,nmap, burpsuite, sqlmap, msf, IDA,ollydbg, hydra, 彩虹表, hashid, 各种扫描器如openvas, awvs, 等等等等吧
然后说说网站和通讯吧,客户端和服务器,用户输入网址点击访问到服务器返回网页这其中涉及的知识
如JavaScript, http请求, web服务器,数据库服务器,系统架构,负载均衡,DNS,等等是要熟练掌握的,然后说说主流的网站开发框架,其中Java的SSH三大框架要了解有什么漏洞啥的
PHP的主流框架和CMS要了解,最好上面的框架都会掌握,如织梦,thinkPHP等等,另外主流的数据库服务器要了解如MySQL,sql server等等等等
如果要做漏洞利用的话涉及到TCP等编程,要会TCP编程, 如果为了通讯安全,要掌握当前主流的加密算法,如AES, RSA, 3DES等等各种加密算法,如果要对端口进行暴力破解,要掌握端口的爆破技术,比如字典的选择使用。
说说软件安全吧,要了解软件运行的时候在操作系统里怎么运行的,从计算机磁盘文件加载到内存,怎么布局的,代码段,数据段,堆栈段什么的,代码的参数在堆栈布局,内存地址什么的,另外还要了解系统的保护机制如代码执行保护等等
黑客需要学习的东西有很多,很都东西都很关键
能走多远,就看你的执行力和兴趣了
我这里有很多的干货资料

需要资料的小伙伴可以参考下图找我来拿

有想学黑客技术的也可以来跟我学,10年技术积累
type exec_opts =
{ bound: int
; skip_throw: bool
; function_summaries: bool
; entry_points: string list
; globals: Domain_used_globals.r }
module Make (Dom : Domain_intf.Dom) = struct
module Stack : sig
type t
type as_inlined_location = t [@@deriving compare, sexp_of]
val empty : t
val push_call :
Llair.func Llair.call -> bound:int -> Dom.from_call -> t -> t option
val pop_return : t -> (Dom.from_call * Llair.jump * t) option
val pop_throw :
t
-> init:a
-> unwind:
( Llair.Reg.t list
-> Llair.Reg.Set.t
-> Dom.from_call
-> a
-> a)
-> (Dom.from_call * Llair.jump * t * a) option
end = struct
type t =
| Return of
{ recursive: bool (** return from a possibly-recursive call *)
; dst: Llair.Jump.t
; formals: Llair.Reg.t list
; locals: Llair.Reg.Set.t
; from_call: Dom.from_call
; stk: t }
| Throw of Llair.Jump.t * t
| Empty
[@@deriving sexp_of]
type as_inlined_location = t [@@deriving sexp_of]
(* Treat a stack as a code location in a hypothetical expansion of the
program where all non-recursive functions have been completely
inlined. In particular, this means to compare stacks as if all Return
frames for recursive calls had been removed. Additionally, the
from_call info in Return frames is ignored. *)
let rec compare_as_inlined_location x y =
if x == y then 0
else
match (x, y) with
| Return {recursive= true; stk= x}, y
|x, Return {recursive= true; stk= y} ->
compare_as_inlined_location x y
| Return {dst= j; stk= x}, Return {dst= k; stk= y} -> (
match Llair.Jump.compare j k with
| 0 -> compare_as_inlined_location x y
| n -> n )
| Return _, _ -> -1
| _, Return _ -> 1
| Throw (j, x), Throw (k, y) -> (
match Llair.Jump.compare j k with
| 0 -> compare_as_inlined_location x y
| n -> n )
| Throw _, _ -> -1
| _, Throw _ -> 1
| Empty, Empty -> 0


